HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/marketing.cfbon.ru/public_html/public/adminLTE/dist/js/products.js
document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('tbody td:nth-child(4)').forEach(cell => {
        cell.addEventListener('click', function (e) {
            if (e.target.tagName === 'BUTTON' || e.target.tagName === 'TEXTAREA') return;
            if (this.querySelector('form')) return;

            this.dataset.originalText = this.textContent.trim();

            const form = document.createElement('form');
            form.innerHTML = `
                  <textarea rows="4" class="form-control">${this.textContent.trim()}</textarea>
                  <div>
                    <button type="submit" class="btn btn-sm btn-outline-danger save-value mt-2">Сохранить</button>
                    <button type="button" class="btn btn-sm btn-outline-secondary cancel-edit mt-2">Отмена</button>
                  </div>
                `;
            this.innerHTML = '';
            this.appendChild(form);
            form.querySelector('textarea').focus();
        });
    })

    document.addEventListener('click', function(e) {
        if (e.target.classList.contains('cancel-edit')) {
            const form = e.target.closest('form');
            const td = form.closest('td');

            td.textContent = form.querySelector('textarea').value;
            td.textContent = td.dataset.originalText || '';
        }
    });

    document.addEventListener('click', function(e) {
        if (e.target && e.target.matches('button.save-value')) {
            e.preventDefault();

            const button = e.target;
            const form = button.closest('form');

            if (!form) return;

            const textarea = form.querySelector('textarea');
            const td = form.closest('td');
            const productId = td.closest('tr').dataset.id;

            button.disabled = true;
            button.textContent = 'Сохранение...';

            fetch(`/site-main-page/menu/product/${productId}/change-description`, {
                method: 'PUT',
                headers: {
                    'Content-Type': 'application/json',
                    'X-CSRF-TOKEN': window.Laravel.csrfToken,
                },
                body: JSON.stringify({description: textarea.value})
            })
                .then(response => {
                    if (!response.ok) throw response;
                    return response.json();
                })
                .then(data => {
                    td.textContent = data.description || '';
                    delete td.dataset.originalText;
                    form.remove();

                    showToast(data.message, true);
                })
                .catch(async (error) => {
                    let message = "Неизвестная ошибка";
                    try {
                        if (error instanceof Response) {
                            const data = await error.json();
                            message = data.message || data.error || "Ошибка сервера";
                        } else if (error.message) {
                            message = error.message;
                        }
                    } catch (e) {
                        message = "Ошибка обработки ответа";
                    }

                    showToast(message, false);
                })
                .finally(() => {
                    button.disabled = false;
                    button.textContent = 'Сохранить';
                });
        }
    });

    function showToast(message, isSuccess) {
        Toastify({
            text: message,
            duration: 3000,
            gravity: "top",
            position: "right",
            backgroundColor: isSuccess ? "#4CAF50" : "#f44336",
        }).showToast();
    }
});