mod: JS вынесен во внешний скрипт
This commit is contained in:
@@ -1,71 +1,8 @@
|
|||||||
<!-- Информация об адресах, просмотренных текущим пользователем (читается из браузерных кук) -->
|
{% load static %}<!-- Информация об адресах, просмотренных текущим пользователем (читается из браузерных кук) -->
|
||||||
<div class="col-xs-12">
|
<div class="col-xs-12">
|
||||||
<div class="col-md-11 col-xs-12{% if background_color != "None" %} last_user_visit{% endif %}" id="last_user_visit_container" style="display:none;">
|
<div class="col-md-11 col-xs-12{% if background_color != "None" %} last_user_visit{% endif %}" id="last_user_visit_container" style="display:none;">
|
||||||
<h5>Цены на окна просмотренные вами {{ background_color }}:</h5>
|
<h5>Цены на окна просмотренные вами:</h5>
|
||||||
<ul id="last_visits_list"></ul>
|
<ul id="last_visits_list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript" src="{% static 'js/last_user_visit.js' %}"></script>
|
||||||
/**
|
|
||||||
* Отслеживание последних визитов пользователя из браузерных кук.
|
|
||||||
* Читает куку 'LastVisit', парсит JSON и выводит список ссылок на уже просмотренные ценовые отчёты.
|
|
||||||
*/
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
// Функция для получения значения куки по имени
|
|
||||||
function getCookieValue(name) {
|
|
||||||
try {
|
|
||||||
if (document.cookie) {
|
|
||||||
const cookies = document.cookie.split('; ');
|
|
||||||
for (let cookie of cookies) {
|
|
||||||
const [cookieName, cookieValue] = cookie.split('=');
|
|
||||||
if (cookieName === name) {
|
|
||||||
return decodeURIComponent(cookieValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.warn('Ошибка при чтении куки LastVisit:', e);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Получаем куку с визитами
|
|
||||||
const cookieValue = getCookieValue('LastVisit');
|
|
||||||
if (cookieValue) {
|
|
||||||
try {
|
|
||||||
const visits = JSON.parse(cookieValue);
|
|
||||||
|
|
||||||
// Проверяем, есть ли визиты
|
|
||||||
if (visits && visits.length > 0) {
|
|
||||||
const listContainer = document.getElementById('last_visits_list');
|
|
||||||
const lastUserVisitContainer = document.getElementById('last_user_visit_container');
|
|
||||||
|
|
||||||
// Очищаем список перед заполнением
|
|
||||||
listContainer.innerHTML = '';
|
|
||||||
|
|
||||||
// При перезагрузке страницы текущий визит уже записан, поэтому пропускаем первый
|
|
||||||
const visitsToShow = visits.slice(1);
|
|
||||||
|
|
||||||
// Выводим предыдущие визиты (не текущий)
|
|
||||||
for (let i = 0; i < visitsToShow.length; i++) {
|
|
||||||
const item = visitsToShow[i];
|
|
||||||
const li = document.createElement('li');
|
|
||||||
|
|
||||||
// Форматируем текст ссылки: адрес (тип квартиры)
|
|
||||||
const linkText = `Цены на окна для серии ${item.LastApart} <small>(${item.LastAddress})</small>`;
|
|
||||||
|
|
||||||
li.innerHTML = `<a href="${item.LastURL}">${linkText}</a>`;
|
|
||||||
listContainer.appendChild(li);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Если есть данные для отображения, показываем блок
|
|
||||||
if (visitsToShow.length > 0) {
|
|
||||||
lastUserVisitContainer.style.display = 'block';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.warn('Ошибка при разборе JSON из кук LastVisit:', e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|||||||
55
public/static/js/last_user_visit.js
Normal file
55
public/static/js/last_user_visit.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* Отслеживание последних визитов пользователя из браузерных кук.
|
||||||
|
* Читает куку 'LastVisit', парсит JSON и выводит список ссылок на уже просмотренные ценовые отчёты.
|
||||||
|
*/
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
// Функция для получения значения куки по имени
|
||||||
|
function getCookieValue(name) {
|
||||||
|
try {
|
||||||
|
if (document.cookie) {
|
||||||
|
const cookies = document.cookie.split('; ');
|
||||||
|
for (let cookie of cookies) {
|
||||||
|
const [cookieName, cookieValue] = cookie.split('=');
|
||||||
|
if (cookieName === name) {
|
||||||
|
return decodeURIComponent(cookieValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Ошибка при чтении куки LastVisit:', e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Получаем куку с визитами
|
||||||
|
const cookieValue = getCookieValue('LastVisit');
|
||||||
|
if (cookieValue) {
|
||||||
|
try {
|
||||||
|
const visits = JSON.parse(cookieValue);
|
||||||
|
// Проверяем, есть ли визиты
|
||||||
|
if (visits && visits.length > 0) {
|
||||||
|
const listContainer = document.getElementById('last_visits_list');
|
||||||
|
const lastUserVisitContainer = document.getElementById('last_user_visit_container');
|
||||||
|
// Очищаем список перед заполнением
|
||||||
|
listContainer.innerHTML = '';
|
||||||
|
// При перезагрузке страницы текущий визит уже записан, поэтому пропускаем первый
|
||||||
|
const visitsToShow = visits.slice(1);
|
||||||
|
// Выводим предыдущие визиты (не текущий)
|
||||||
|
for (let i = 0; i < visitsToShow.length; i++) {
|
||||||
|
const item = visitsToShow[i];
|
||||||
|
const li = document.createElement('li');
|
||||||
|
// Форматируем текст ссылки: адрес (тип квартиры)
|
||||||
|
const linkText = `Цены на окна для серии ${item.LastApart} <small>(${item.LastAddress})</small>`;
|
||||||
|
li.innerHTML = `<a href="${item.LastURL}">${linkText}</a>`;
|
||||||
|
listContainer.appendChild(li);
|
||||||
|
}
|
||||||
|
// Если есть данные для отображения, показываем блок
|
||||||
|
if (visitsToShow.length > 0) {
|
||||||
|
lastUserVisitContainer.style.display = 'block';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Ошибка при разборе JSON из кук LastVisit:', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user