Илья

Илья

С нами с 27 февраля 2025; Место в рейтинге пользователей: #14015

Проблемы с CKeditor? сбрасывает html теги

Всем привет! Есть такой код, который редактирует данные пользователя с фронтенда, код полностью рабочий, но проблема в CKeditor, при заполнении с фронтенда все html теги в редакторе проставляются, а после отправки формы в редакторе все html теги сбрасываются, кроме и в админку приходит тоже все в теге .
Илья
21 марта 2025, 14:20
modx.pro
125
0

Какие права доступа нужно давать пользователям для удаление своих записей

Всем привет, сделал добавление и изменения записей со стороны фронтенда и хотел сделать еще удаление записей, но проблема в том, что у админа удаление работает, а у пользователей нет. В журнале ошибок выскакивает ошибка, что у пользователя нет прав на удаление. Когда пользователь нажимает на ссылку «Удалить», то появляется просто текст Array. Сейчас стоит web, member-9999, load,list and view, но пробовал ставить разные политики доступа, ничего не меняется.
Код сниппета
<?php
if (!empty($_GET['action']) && $_GET['action'] === 'delete' && !empty($_GET['resourceId'])) {
    $resourceId = intval($_GET['resourceId']);
    $resource = $modx->getObject('modResource', $resourceId);

    // Проверка, существует ли ресурс
    if (!$resource) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: Ресурс с ID ' . $resourceId . ' не найден.');
        return $modx->error->failure('Ресурс не найден.');
    }

    // Проверка прав доступа
    if (!$modx->hasPermission('delete_document')) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: У пользователя нет прав на удаление ресурса с ID ' . $resourceId);
        return $modx->error->failure('У вас нет прав на удаление этого ресурса.');
    }

    // Проверка, является ли текущий пользователь создателем ресурса
    $userId = $modx->user->get('id');
    if ($resource->get('createdby') != $userId) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: Пользователь с ID ' . $userId . ' пытался удалить чужой ресурс с ID ' . $resourceId);
        return $modx->error->failure('Вы можете удалять только свои записи.');
    }

    // Удаление ресурса
    if ($resource->remove()) {
        $modx->log(modX::LOG_LEVEL_INFO, 'Ресурс с ID ' . $resourceId . ' успешно удален пользователем с ID ' . $userId);
        // Перенаправление после успешного удаления
        $modx->sendRedirect($modx->makeUrl($modx->getOption('site_start'), '', '', 'full'));
    } else {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: Не удалось удалить ресурс с ID ' . $resourceId);
        return $modx->error->failure('Не удалось удалить ресурс.');
    }
}
Ссылка на удаление
a href="[[~[[*id]]]]?action=delete&resourceId=[[+id]]" onclick="return confirm('Вы уверены, что хотите удалить этот ресурс?');">Удалить ресурс</a>
Может кто в курсе какие права доступа вставлять или может я вообще неправильно все делаю.
Илья
18 марта 2025, 11:58
modx.pro
467
0

Не выводятся данные пользователя в профиле

Всем привет!
Сделал регистрацию и авторизацию с Login, затем сделал личный кабинет и все это работает. Захотел сделать страницу профиль пользователя, чтобы другие могли посмотреть.
Илья
14 марта 2025, 17:36
modx.pro
122
0

Как сделать загрузку изображения с фронтенда в tv поле

Всем привет, сделал форму добавления записи с фронтенда, поля название, содержание и tv поле изображение
<form action="[[~[[*id]]]]" method="post" enctype="multipart/form-data">
    <label for="title">Название записи:</label>
    <input type="text" name="title" id="title" required>

    <label for="content">Содержание записи:</label>
    <textarea name="content" id="content" rows="4" required></textarea>

    <label for="img">Загрузите изображение (JPEG, PNG, GIF):</label>
    <input type="file" name="img" id="img" accept="image/jpeg, image/png, image/gif" required>

    <input type="submit" value="Добавить запись">
</form>

[[!AddPost]]
Содержание сниппета
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Получаем данные
    $title = trim($_POST['title']);
    $content = trim($_POST['content']);
    $img = $_POST['img-post'];
    
    // Проверяем и загружаем изображение
    $uploadDir = $modx->getOption('base_path') . 'assets/image/post-img/'; // Папка для загрузки изображений
    if (!is_dir($uploadDir)) {
        mkdir($uploadDir, 0755, true);
    }

    $fileTmpImg = $_FILES['img']['tmp_name'];
    $fileMimeTypeImg = mime_content_type($fileTmpImg);
    $allowedImageMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];

    if (in_array($fileMimeTypeImg, $allowedImageMimeTypes)) {
        $fileNameImg = uniqid() . '.' . pathinfo($_FILES['img']['name'], PATHINFO_EXTENSION);
        $fileFullPathImg = $uploadDir . $fileNameImg;

        if (move_uploaded_file($fileTmpImg, $fileFullPathImg)) {
            // Создание нового ресурса в MODX
            $newResource = $modx->newObject('modResource');
            $newResource->fromArray([
                'pagetitle' => $title,
                'content' => $content,
                'template' => 3, // Укажите ID шаблона,
                'published' => 1,
                'createdby' => $modx->user->get('id'),
                // Добавьте необходимые поля
            ], '', true, true);
            
            $newResource->setTVValue('img-post', $fileFullPathImg);

            // Сохранение ресурса
            if ($newResource->save() === false) {
                echo "Ошибка при сохранении записи.";
            } else {
                // Успешно сохранено, выводим изображение
                echo "<h2>Запись добавлена!</h2>";
                echo "<h3>{$title}</h3>";
                echo "<p>{$content}</p>";
                echo "<img src='/assets/image/post-img/{$fileNameImg}' alt='Uploaded Image' />";
            }
        } else {
            echo "Ошибка при загрузке изображения.";
        }
    } else {
        echo "Недопустимый формат изображения. Пожалуйста, загрузите JPEG, PNG или GIF.";
    }
}
Страница создается все поля подтягиваются, кроме tv поля изображение. Как подтянуть изображение, чтобы оно отображалось в админке в tv поле? Можете кидаться камнями по поводу кода, так как недавно познакомился с modx.
Илья
07 марта 2025, 19:21
modx.pro
583
0

Tickets не работают комментарии

Замутил на modx revo 2.8.7 сайт, решил к статьям сделать комментирование, установил tickets и вывел стандартную форму комментирования. Форма без заполнения работает, т.е. при пустой форме можно нажать на кнопку «Предпросмотр» и она работает, нажать кнопку «Написать» и отрабатывается валидация, но когда заполняю форму, то кнопки не работают и в консоле выскакивает /assets/components/tickets/action.php 500 (Internal Server Error). Поискал варианты решения в инете, но так и не нашел. Попробовал изменить права на папки, тоже не сработало. Jquery установлен. Может кто сталкивался с такой проблемой. Сайт лежин на хостинге бегет
Илья
27 февраля 2025, 17:08
modx.pro
952
0