Список пользователей

1
Админ
Постов: 101
2
Элита
Постов: 34
3
Элита
Постов: 28
4
VIP
Постов: 26
5
Дизайнер
Постов: 25
6
Пользователи
Постов: 25
7
Пользователи
Постов: 24
8
Проверенные
Постов: 21

  • Страница 1 из 1
  • 1
Личные сообщения на UCOZ версия V2 версия
Дата: Понедельник, 20.10.2025, 13:46 | Сообщение # 1 | | Написал: Начинающий
Автор темы
Мурчанн не в сети
        Сообщений:101
         Регистрация:20.10.2016

Внесены изменения в CSS: добавлена подсветка, широкая линия над меню и эффекты при наведении на кнопки.

Полностью вставляйте шаблон на свой сайт — всё будет работать.
Нет необходимости перезагружать изображения: пока этот сайт активен, будут корректно работать и ваши личные сообщения.



Код
<!DOCTYPE html>
<html>
<head>
<title>$TITLE$</title>
<meta name="viewport" content="width=device-width; initial-scale=0.85; maximum-scale=0.85; user-scalable=0;" />
<script type="text/javascript" src="//s43.ucoz.net/src/jquery-1.6.1.js"></script>
<link href="https://fonts.googleapis.com/css?family=Material+Icons|Roboto:400,700" rel="stylesheet">
<style type="text/css" media="all"> @import url(https://jordan.moy.su/css/pmnew.css);</style>

<header>
<div class="container">
<div class="tp-over">
<div class="tp-1">
<a class="h-logo" href="/">$USERNAME$ </a></div>

<div class="comment_avatar">

<?if($USERS_ON$)?>
<?if($USER_LOGGED_IN$)?>
<?if($USER_AVATAR_URL$)?><img src="$USER_AVATAR_URL$" alt="Твоё фото " width="50px" height="50px">

<?else?><span class="no_avatar material-icons">person</span>

<?endif?>
<?endif?>
<?endif?>

<div style="text-align: center;">
<div class="statusOnline"> Онлайн </div>

</div>
</div>

<div style="display:none; text-align:center; color:green;" class="stati"><?if(strpos($PROFILE_URL$,'target')>0)?><?substr($PROFILE_URL$,0,-16)?><?else?>$PROFILE_URL$<?endif?></div>

<div class="tp-2">
<nav class="h-menu">
<div id="uNMenuDiv1" class="uMenuV"><ul class="uMenuRoot">
<li><a class=" uMenuItemA" href="https://jordan.moy.su">

<span>Главная</span>

</a></li>
<li><a href="/forum/"><span>Форум</span></a></li>

<li><a href="/index/11"><span>настройки</span></a></li>
<li><a href="/index/0-3"><span>Обратная связь</span></a></li>

<li class="uWithSubmenu"><a href=""><span>Еще</span></a><ul>
<li><a href="/"><span>Новости </span> </a></li>
<li><a href="/"><span>Блог</span></a></li>

</nav>
<div class="h-menu-button" onclick="$('.h-menu').slideToggle()"><div><span class="hm1"></span><span class="hm2"></span><span class="hm3"></span></div></div>
</div>
<div class="headpoisk">
<div class="searchForm">

<div class="headpoisk">
<div class="poiskico">
<img src="https://img.icons8.com/ios-filled/50/search.png" alt="поиск">
</div>

<form onsubmit="this.sfSbm.disabled=true" method="get" style="margin:0" action="/search/">
<input type="text" size="150" maxlength="100" name="q" class="queryField2" value="Поиск по сайту..." onfocus="if(this.value == 'Поиск по сайту...'){this.value = ''}" onblur="if(this.value == ''){this.value = 'Поиск по сайту...'}">
<input type="submit" value=" " name="sfSbm" class="queryField2 ">
</form>

</div>

</div>
</div>
</header>

</head>
<body>

<div align="center">
<div class="block">
<div class="pmb">

</h1>

</div>
<div class="text message-infos"><div style="text-align: justify;"></div>

$_AVATAR$
$BODY$
</div>
</div>
</div>
</div>

<script type="text/javascript">
$('body').each(function () {
$(this).html($(this).html().replace(/\[|\||\]/g, ''));
});
</script>
<script type="text/javascript">$("#ugr1, #ugr2, #ugr3, #ugr251").attr("checked","checked")</script>

<script type="text/javascript" src="https://jordan.moy.su/newpm/script.js"></script>

<script>
(function(){
'use strict';

const DEFAULT_AVATAR = "https://jordan.moy.su/ava/avapm.png";
const CHECK_DELAY = 100;

let avatarMap = {}; // key = href или name

function applyAvatar(container, key){
if(!container) return;

let overlay = container.querySelector('.avatarOverlay');
if(!overlay){
overlay = document.createElement('div');
overlay.className = 'avatarOverlay';
overlay.style.position = 'absolute';
overlay.style.top = '0';
overlay.style.left = '-2px'; // сдвигаем на 10px влево
overlay.style.width = '60px'; // ширина контейнера
overlay.style.height = '72px'; // высота контейнера

overlay.style.display = 'flex';
overlay.style.justifyContent = 'center';
overlay.style.alignItems = 'center';
overlay.style.paddingTop = '-5px'; // визуальное опускание
overlay.style.paddingBottom = '10px';
overlay.style.overflow = 'hidden';
overlay.style.zIndex = '10';
if(getComputedStyle(container).position==='static') container.style.position='relative';
container.appendChild(overlay);
}

let img = overlay.querySelector('img');
if(!img){
img = document.createElement('img');
img.style.maxWidth = '100%';
img.style.maxHeight = '100%';
img.style.objectFit = 'cover';
img.style.objectPosition = 'center';
img.style.margin = 'auto';
img.style.display = 'block';
img.style.borderRadius = '5px'; // можно 50% сделать круглый аватар
overlay.appendChild(img);
}

// Жёсткая логика: если аватар найден в карте — используем, иначе дефолт
img.src = avatarMap[key] || DEFAULT_AVATAR;
img.alt = '';
}

// Определяем отправителя
function findSender(row){
if(!row) return null;
const fromCell = row.querySelector('td:nth-child(2), td:nth-child(3), .nick, .username');
if(fromCell){
const a = fromCell.querySelector('a[href*="/index/8-0-"], a[href*="/users/"], a.profile-link');
if(a) return {href:a.href, name:a.textContent.trim()};
return {name: fromCell.textContent.trim()};
}
return null;
}

// Асинхронно ищем реальную аву
async function fetchAvatar(identifier){
if(!identifier) return null;
const key = identifier.href || identifier.name;

if(avatarMap[key] && avatarMap[key] !== DEFAULT_AVATAR) return avatarMap[key];

const urls = identifier.href ? [identifier.href] : [
location.origin + '/index/8-0-' + encodeURIComponent(identifier.name.replace(/\s+/g,'-')),
location.origin + '/index/8-0-' + encodeURIComponent(identifier.name)
];

for(const url of urls){
try {
const res = await fetch(url, {cache:'no-cache'});
if(!res.ok) continue;
const html = await res.text();
const doc = new DOMParser().parseFromString(html, "text/html");
const img = doc.querySelector('img[src*="/avatar/"], img[src*="/ava/"], .user_avatar img, .avatar img, .profile-picture img');
if(img && img.src && !/noavatar|default|empty/i.test(img.src)){
avatarMap[key] = new URL(img.src, url).href;
return avatarMap[key];
}
} catch(e){}
await new Promise(r=>setTimeout(r, CHECK_DELAY));
}

return null; // если авы нет — дефолт остаётся
}

// Обработка строк сообщений
async function processRows(){
const rows = Array.from(document.querySelectorAll('.userpm-messages-table tr[id^="ent"], .pm-list tr, tr.pm-row'));
for(const row of rows){
if(row.dataset._avatarInjected==='1') continue;

const identifier = findSender(row);
const cell = row.querySelector('.r_round, .avatar, .pm_avatar, td:first-child, td.avatar-cell');
if(identifier && cell){
const key = identifier.href || identifier.name;

// Сначала дефолтная аватарка
applyAvatar(cell, key);

// Асинхронно подставляем реальную аву
fetchAvatar(identifier).then(realSrc=>{
if(realSrc) applyAvatar(cell, key);
// если realSrc null — дефолт останется
});
}

row.dataset._avatarInjected='1';
}
}

// Открытые PM
async function processOpenPMs(){
const openPMs = Array.from(document.querySelectorAll('.userpm-message-table'));
for(const pm of openPMs){
if(pm.dataset._avatarInjected==='1') continue;

const header = pm.querySelector('.userpm-message-subject, .pm-header, .pm-author');
const link = pm.querySelector('a[href*="/index/8-0-"], a[href*="/users/"]');
const identifier = link ? {href:link.href, name:link.textContent.trim()} : header ? {name:header.textContent.trim()} : null;
const target = pm.querySelector('.r_round, .avatar, .pm_avatar, .userpm-message-subject') || pm;

if(identifier && target){
const key = identifier.href || identifier.name;

// Дефолт для отправителя
applyAvatar(target, key);

// Асинхронно реальная
fetchAvatar(identifier).then(realSrc=>{
if(realSrc) applyAvatar(target, key);
});
}

pm.dataset._avatarInjected='1';
}
}

// Инициализация
function init(){
processRows();
processOpenPMs();
const obs = new MutationObserver(()=>{
processRows();
processOpenPMs();
});
obs.observe(document.body, {childList:true, subtree:true});
}

// Стили
(function addStyles(){
const st = document.createElement('style');
st.textContent = `
.avatarOverlay img{
transform-origin: center center;
}
.avatarOverlay img:hover{
transform: scale(1.04);
transition: transform .18s ease;
}`;
document.head.appendChild(st);
})();

if(document.readyState==='loading') document.addEventListener('DOMContentLoaded', init); else init();

})();
</script>

<script>
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.userpm-messages-table tr[id^="ent"]').forEach(row => {
const msgLink = row.querySelector('td a[href*="/index/14-"]');
if (msgLink) {
row.style.cursor = 'pointer';
row.style.transition = 'all 0.2s ease';

// при наведении — "вдавливается"
row.addEventListener('mouseenter', () => {
row.style.transform = 'scale(1.03) translateY(1px)'; // чуть меньше, чуть вниз
row.style.boxShadow = 'inset 0 2px 6px rgba(0,0,0,0.2)'; // внутренняя тень
row.style.backgroundColor = '';
});

// возвращается обратно
row.addEventListener('mouseleave', () => {
row.style.transform = 'scale(1) translateY(0)';
row.style.boxShadow = 'none';
row.style.backgroundColor = '';
});

// кликабельность
row.addEventListener('click', (e) => {
if (!e.target.closest('a') && !e.target.closest('input')) {
window.location.href = msgLink.href;
}
});
}
});
});
</script>

<div class="cursor"></div>
<div class="cursor-follower"></div>

<script>
document.addEventListener("DOMContentLoaded", () => {
const cursor = document.querySelector(".cursor");
const follower = document.querySelector(".cursor-follower");

let posX = 0, posY = 0;
let mouseX = 0, mouseY = 0;

// Плавное движение
function animate() {
posX += (mouseX - posX) / 6;
posY += (mouseY - posY) / 6;
follower.style.transform = `translate(${posX}px, ${posY}px)`;
cursor.style.transform = `translate(${mouseX}px, ${mouseY}px)`;
requestAnimationFrame(animate);
}
animate();

// Отслеживаем курсор
document.addEventListener("mousemove", e => {
mouseX = e.clientX;
mouseY = e.clientY;
});
});
</script>

<script>
(function() {
// Функция для скрытия элементов с текстом "Массовая рассылка"
const hideMassMail = (node) => {
node.querySelectorAll('a, button, span, div').forEach(el => {
if (el.textContent && el.textContent.trim().toLowerCase() === 'массовая рассылка') {
el.style.display = 'none';
}
});
};

// Сначала скрываем уже существующие кнопки
hideMassMail(document);

// Создаем наблюдателя за новыми элементами (AJAX, динамика)
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => hideMassMail(node));
});
});

observer.observe(document.body, {
childList: true,
subtree: true
});
})();
</script>

</body>
</html>

Мурчанн

Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
Дата: Понедельник, 20.10.2025, 19:09 | Сообщение # 2 | | Написал: Новичок
Messi не в сети
        Сообщений:25
         Регистрация:15.03.2024

Это предел возможностей системы UCoz ,
на пределе возможностей ,
была создана страница личных сообщений.

Messi

Сообщение отредактировал Messi - Понедельник, 20.10.2025, 19:09
Ме́сси аргентинский футболист, нападающий футбольного клуба «Барселона», с 2011 года капитан национальной сборной Аргентины. Лучший бомбардир в истории «Барселоны» и сборной Аргентины. Считается одним из лучших футболистов современности и одним из лучшиx игроков всеx времён.
Дата: Вторник, 21.10.2025, 15:41 | Сообщение # 3 | | Написал: Новичок
Thalia не в сети
        Сообщений:6
         Регистрация:19.10.2025

Нужен вариант светлых тонов 6

Thalia

Если стоит выбор между «да» или «нет», то «да»! Сделайте это. Поцелуйте, обнимите, догоните, встретьтесь, скажите. И пусть выйдет ерунда, зато хоть попытались.
Дата: Вторник, 21.10.2025, 20:48 | Сообщение # 4 | | Написал: Новичок
Marco не в сети
        Сообщений:5
         Регистрация:13.03.2010

Справа сделать колонку список юзеров, которым можно написать, как записная книжка.

Marco

Мы упорно отгораживались от всех до тех пор, пока не остались вдвоем. Впрочем, ты наверняка не задумывался над этим — ведь ты никогда не был в таком положении, в каком оказалась я. Ты никогда не был один. У тебя всегда была я. У меня всегда был ты. А сейчас у тебя есть Бетани, а у меня нет никого
  • Страница 1 из 1
  • 1
Поиск: