Файловый менеджер - Редактировать - /home/tuudkjt/globeasy/wp-content/plugins/translatepress-multilingual/assets/js/trp-support-chat.js
Назад
/** * Support Chat Widget * * @package TranslatePress * @since 3.0.9 */ (function() { 'use strict'; // Wait for DOM ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } function init() { var widget = document.getElementById('trp-support-chat-widget'); if (!widget || typeof trpSupportChat === 'undefined') { return; } var config = trpSupportChat; var strings = config.strings; // Elements var toggle = widget.querySelector('.trp-support-chat__toggle'); var chatWindow = widget.querySelector('.trp-support-chat__window'); var closeBtn = widget.querySelector('.trp-support-chat__close'); var postsContainer = widget.querySelector('.trp-support-chat__posts'); var loadingContainer = widget.querySelector('.trp-support-chat__loading'); var sectionLabel = widget.querySelector('.trp-support-chat__section-label'); var badge = widget.querySelector('.trp-support-chat__badge'); // Set text content from localized strings widget.querySelector('.trp-support-chat__title').textContent = strings.title; widget.querySelector('.trp-support-chat__subtitle').textContent = strings.subtitle; widget.querySelector('.trp-support-chat__loading span').textContent = strings.loading; widget.querySelector('.trp-support-chat__encourage-title').textContent = strings.encourageTitle; widget.querySelector('.trp-support-chat__encourage-text').textContent = strings.encourageText; widget.querySelector('.trp-support-chat__tip-title').textContent = strings.tipTitle; widget.querySelector('.trp-support-chat__tip-text').textContent = strings.tipText; widget.querySelector('.trp-support-chat__btn--primary span').textContent = strings.askQuestion; widget.querySelector('.trp-support-chat__btn--secondary span').textContent = strings.viewAll; // Set section label if (sectionLabel) { sectionLabel.textContent = strings.subtitle; } // State var isOpen = false; var postsLoaded = false; // Show widget widget.style.display = 'block'; // Initialize badge based on server-computed new count var newCount = parseInt(config.newCount, 10) || 0; updateBadge(newCount); // Add attention animation after a delay only if there are new posts if (newCount > 0) { setTimeout(function() { toggle.classList.add('trp-support-chat__toggle--attention'); }, 2000); } // Toggle chat window toggle.addEventListener('click', function(e) { e.preventDefault(); isOpen = !isOpen; widget.classList.toggle('trp-support-chat--open', isOpen); toggle.classList.remove('trp-support-chat__toggle--attention'); if (isOpen) { // Mark posts as read and hide badge markPostsAsRead(); updateBadge(0); if (!postsLoaded) { loadPosts(); } } }); // Close button closeBtn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); isOpen = false; widget.classList.remove('trp-support-chat--open'); }); // Close chat when clicking outside document.addEventListener('click', function(e) { if (isOpen && !widget.contains(e.target)) { isOpen = false; widget.classList.remove('trp-support-chat--open'); } }); // Prevent closing when clicking inside chat window chatWindow.addEventListener('click', function(e) { e.stopPropagation(); }); // Keyboard navigation document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && isOpen) { isOpen = false; widget.classList.remove('trp-support-chat--open'); toggle.focus(); } }); function updateBadge(count) { if (count > 0) { badge.textContent = count; badge.style.display = ''; badge.classList.add('trp-support-chat__badge--pulse'); } else { badge.textContent = ''; badge.style.display = 'none'; badge.classList.remove('trp-support-chat__badge--pulse'); } } function markPostsAsRead() { var formData = new FormData(); formData.append('action', 'trp_mark_forum_posts_read'); formData.append('nonce', config.nonce); fetch(config.ajaxUrl, { method: 'POST', credentials: 'same-origin', body: formData }); } function loadPosts() { var formData = new FormData(); formData.append('action', 'trp_get_forum_posts'); formData.append('nonce', config.nonce); fetch(config.ajaxUrl, { method: 'POST', credentials: 'same-origin', body: formData }) .then(function(response) { return response.json(); }) .then(function(data) { if (data.success && data.data.posts) { renderPosts(data.data.posts); postsLoaded = true; } else { showError(data.data ? data.data.message : strings.error); } }) .catch(function(error) { console.error('Support Chat Error:', error); showError(strings.error); }); } function renderPosts(posts) { if (!posts.length) { showError(strings.error); return; } var html = ''; posts.forEach(function(post) { html += '<a href="' + escapeHtml(post.link) + '" target="_blank" rel="noopener" class="trp-support-chat__post">'; html += '<h5 class="trp-support-chat__post-title">' + escapeHtml(post.title) + '</h5>'; html += '<div class="trp-support-chat__post-meta">'; if (post.author) { html += '<span class="trp-support-chat__post-author">' + strings.postedBy + ' ' + escapeHtml(post.author) + '</span>'; } if (post.date) { html += '<span class="trp-support-chat__post-date">' + escapeHtml(post.date) + '</span>'; } html += '</div>'; html += '</a>'; }); postsContainer.innerHTML = html; postsContainer.classList.add('trp-support-chat__posts--loaded'); loadingContainer.classList.add('trp-support-chat__loading--hidden'); } function showError(message) { loadingContainer.innerHTML = '<div class="trp-support-chat__error">' + '<div class="trp-support-chat__error-icon">!</div>' + '<p>' + escapeHtml(message) + '</p>' + '</div>'; } function escapeHtml(text) { var div = document.createElement('div'); div.textContent = text; return div.innerHTML; } } })();
| ver. 1.6 |
Github
|
.
| PHP 8.1.34 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка