Разработка JohnCMS 9.x (обсуждения, новости)

3.1K
.
Кадило крутится, лавэха мутится
Добавлено: 21.05.2020 / 19:11
Ну собственно в этой теме будут какие-то новости и обсуждения следующей версии JohnCMS.

Добавлено: 21.05.2020 / 19:35
Что нового на текущий момент.
1. Как вы уже наверное заметили, добавлен WYSIWYG редактор, но чёт он мне не очень нравится С редакторами бб-кодов всё плохо на данный момент, по этому выбрал тот, который показался лучшим из протестированных ) Возможно к релизу будет заменён на другой, а может кто-то предложит какой нить другой годный редактор о котором я не слышал)
2. В стандартном шаблоне добавлена микроразметка для хлебных крошек для улучшенного представления в результатах поиска в поисковых системах.
Для чего это надо? В гугле над заголовком страницы будет отображаться цепочка навигации, а не безликий URL адрес. Например: johncms.com > Форум > ... > От разработчиков.
3. Мало интересно, но всё же. Гигантский index.php форума разбит на несколько частей чтобы было удобнее в нем ориентироваться. Некоторые параметры, которые раньше были жестко указаны в нем (цвета шкал в опросах и расширения файлов), теперь можно менять в отдельном конфиге.
Для таблиц форума добавлены модели, что позволит существенно облегчить жизнь тем, кто хочет вывести форум на главную.
Для вывода сообщений, топиков или разделов вам больше не придется заботиться о том, чтобы строить запрос с учетом прав пользователя, чтобы скрыть от простых юзеров удаленные темы или посты, а так же не нужно заботиться о том, что дату поста или текст надо отформатировать и попутно ещё получить файлы, прикрепленные к посту.
.
Кадило крутится, лавэха мутится
Ещё на основе полученного опыта при написании пары модулей было решено изменить основной шаблон. Основная проблема, которую надо было решить, это слишком большая контентная область при просмотре с компьютера. Из-за этого длинные тексты выглядят достаточно плохо и читать текст, когда он тянется на всю ширину большого экрана неудобно.
Основная часть шаблона готова, остаётся немного доработать шаблоны модулей чтобы визуально всё выглядело хорошо. Потом будет залито сюда, будем тестить.
.
Add media upload system. For example: img, video, zip, rar etc. And this file can be used in the forum through BB code.
.
Кадило крутится, лавэха мутится
Sohag2019, This is planned, but later.
.
Simba
Кадило крутится, лавэха мутится
Разработчики модулей создавая какой-то модуль часто сталкиваются с задачей валидации форм, которые отправляет пользователь.
Например, практически в любой форме есть поля, которые обязательны для заполнения. Так же есть поля, значения которых нужно проверить на наличие в базе данных, в некоторых полях может находиться файл, размер которого нам нужно проверить, ссылка, правильность которой тоже нужно проверить или же email адрес в котором, например, нужно проверить не только корректность текста до и после символа @, но и наличие MX записей для указанного домена.

Как это делалось раньше?
Для каждой проверки писалось отдельное условие, многие простые проверки получались в несколько строк кода, а многие более сложные в десятки и сотни строк кода.

Как это делается теперь?
Просто описываем массив с правилами валидации, создаем экземпляр валидатора и подаем в него поля и правила валидации. Для большинства часто используемых проверок в системе уже есть готовые валидаторы, так же можно дополнить существующие правила своими.
// Массив полей и значений
$data = [
    'test'   => '',
    'number' => 100,
    'email'  => 'email@example.ru',
    'model'  => 110,
];

// Настройки валидатора
$rules = [
    // Название поля => [ правила валидации и их параметры ]
    'test'   => [
        'NotEmpty',
        'StringLength' => [
            'min' => 6,
            'max' => 80,
        ],
    ],
    'number' => [
        'NotEmpty',
        'LessThan' => ['max' => 90],
    ],
    'email'  => [
        'EmailAddress' => [
            'useMxCheck' => true,
        ],
    ],
    'model'  => [
        'ModelExists' => [
            'model' => \Johncms\Users\User::class,
            'field' => 'id',
        ],
    ],
];

// Валидация
$validator = new \Johncms\Validator\Validator($data, $rules);
if ($validator->isValid()) {
    echo 'OK';
} else {
    d($validator->getErrors());
}
.
Кадило крутится, лавэха мутится
Потихоньку начал исправлять старую беду движка. При возникновении ошибок валидации формы, эти ошибки отображались на отдельной странице и все данные формы терялись. При возникновении ошибки нужно было возвращаться на страницу с формой назад, и заполнять поля заново. Мягко говоря это было не очень приятно
Теперь при ошибках, поле ввода будет подсвечено красным и под ним будет отображаться текст ошибки. При этом данные в форме не будут утеряны и писать всё заново не придётся.
.
Ars longa, vita brevis!
Simba, то что надо
.
Йытлеж Пок пик
Переход из уведомлений к ответу на форуме. Когда? Хватит отправлять в начало темы
.
Кадило крутится, лавэха мутится
Скоро 
.
We should have a class to create and check $csrf_token
Всего: 213