Всем привет!
Новая версия InstantCMS доступна для скачивания и обновления. Мы учли все ваши сообщения об ошибках и пожелания с предыдущей версии.
Релиз тестировался на:
- Apache 2.4.58
- PHP 8.5.3
- MariaDB 10.11.14
Основной список изменений
- Исправлена ошибка работы опции «Компоненты, доступные без авторизации»;
- Пополнение баланса напрямую теперь учитывает вариант, когда могут быть незаконченные действия иных пополнений через покупку контента;
- Показ ID операции Биллинга в списке операций админки;
- Поля с нулевым прайсом показываются гостям;
- Исправлена работа реферальных ссылок, если указан тип контента по умолчанию;
- Исправлен баг с формой приглашения друзей в группу;
- Правки шаблона default для Биллинга;
- Исправлены нотисы под PHP 8.5;
- В экшен actionContentWidgetCatsAjax можно передавать параметр empty_title, id типа контента (параметр value) может быть и именем;
- В виджет категорий ТК добавлены опции выбора категории, «Заголовок корневой категории», «Показывать количество записей в категориях»;
- Исправлена проблема с URL и лого при поиске по группам;
- При включенном типографе добавлена обработка атрибута data-as-is, при наличии которого тег iframe разбирается как передан;
- Исправлен баг с Биллингом когда группа не до конца менялась;
- Исправлен баг при авторизации, когда была включена 2FA и капча;
- Добавлен более удобный метод контроллера runExternalActionIfExists(), исправлена ошибка с отсутствующими вложенными экшенами;
- Исправлен нотис с датой задачи планировщика;
- В Биллинге операции покупки плана имеют принадлежность к id плана;
- В Биллинге операции перевода между пользователями и покупки подписок можно отменять в админке;
- Добавлены хуки на операции перевода между пользователями и регистрацию рефералов;
- Исправлена ошибка, когда при продлении подписки не сохранялось время;
- Исправлена ошибка, когда платёж WebMoney не проходил;
- Исправлены нотисы в свойствах ТК;
- Исправлена ошибка связки Биллинга и загрузки фото в фотоальбомы;
- Исправлена ошибка настройки почты при некоторых параметрах;
- Добавлены подписи к SEO полям ТК «Не забудьте включить правило доступа Управление SEO параметрами записей»;
- Добавлена опция «Реферальная программа разрешена группам» для Биллинга;
- Добавлена опция «Хранить реферальную куку после успешной регистрации» для Биллинга;
- PHPMailer 7.0.2;
- Исправлена путаница с модерацией отредактированной записи;
- Добавлен виджет «Подписки» для Биллинга;
- Добавлена возможность указывать характеристики подписок Биллинга для сравнения;
- Добавлена возможность подписки на тарифный план автоматически после регистрации;
- Тарифный план может быть бесплатным, он будет бессрочным;
- Создавать план можно копированием;
- Добавлены CSRF токены, где их не хватало;
- Иконки в гридах из одного набора;
- Исправлен баг, когда при включенном Биллинге для обычных пользователей не сохранялись записи ТК;
- Для категорий ТК теперь невозможно случайно создать урл, схожий по строению с наборами;
- В отладке теперь выводятся версия MySQL, имя текущего шаблона, имя системы кэширования, имена страниц для виджетов;
- Новый класс cmsWysiwyg, от которого надо наследовать редакторы (совместимость оставлена);
- В поле fieldHtml при сохранении вызывается метод prepareValue из класса редактора;
- Для поля fieldFieldsgroup добавлена возможность сортировки перетаскиванием;
- Редактор Ace обновлён до актуальной версии;
- Автоматический параметр csrf_token на пунктах меню с подтверждением;
- Оптимизирована «похожесть» по тегам в виджете списка контента, на больших таблицах теперь работает быстро;
- Массовое удаление пунктов меню и перенос между наборами меню;
- Включение систем оплаты биллинга только для администраторов (отладки);
- Подсветка логов систем оплаты биллинга;
- Новые опции рейтинга: «Разрешить менять оценку», «Разрешить менять оценку только в рамках текущей сессии пользователя», «Отключить отрицательные оценки»;
- Ограничение длины запроса компонента «Поиск»;
- Опции НДС 22% для Юкассы и Робокассы;
- Новые опции подписок Биллинга: «Заменить группы пользователя», зачислить на баланс баллы при покупке за реальную валюту;
- В админке в списке тарифов биллинга показывается минимальный прайс;
- Исправлена ошибка с опцией доступа по ip к админке;
- Самому себе теперь нельзя запретить доступ по ip к админке;
- Если виджет принадлежит контроллеру, то в форме настроек языковой файл подключится автоматически;
- Опция «Ограничить длину заголовка записи» для ленты активности, в том числе для виджета;
- Подсветка SQL в отладке;
- Очередная порция мелких косметических правок и рефакторинга, о которых расскажет вам dif :)
Подробнее об изменениях вы можете узнать, ознакомившись с описаниями всех коммитов с прошлого релиза.
Как установить обновление InstantCMS
Важно! Убедитесь, что сейчас вы используете версию 2.18.0, иначе, обновитесь сначала до неё.
Перед началом обновления обязательно сделайте самостоятельно резервную копию своего сайта и дамп базы данных. Мы не несем никакой ответственности за любые потери данных, произошедшие в результате неправильных действий при обновлении.
- Убедитесь, что вы используете версию PHP не ниже 7.2.0;
- Отключите кеширование в настройках сайта;
- Отключите объединение js и css в настройках сайта;
- Если вы используете свой шаблон и в нем есть файлы, присутствующие в пакете обновления, то обновите их;
- При возникновении «белого экрана» категорически читать здесь;
- Для тех, у кого свой шаблон у нас есть статья как быть, если в обновлении CMS есть изменения в шаблоне, рекомендуем к прочтению;
- После обновления обратите внимание на новые настройки компонентов «Биллинг» и «Рейтинг» и при необходимости заполните/пересохраните их.
Если в вашем шаблоне присутствуют JavaScript файлы со своими правками (взяты из /templates/default/js/ или /templates/modern/js/), замените/смержите их из пакета обновления. Не забывайте о сбросе кэша браузера абстрактным счетчиком для посетителей ваших сайтов.
Если у вас кастомная урезанная сборка, то распакуйте пакет обновления, удалите ненужные контроллеры, запакуйте обратно и обновитесь.
Механизм установки обновлений подробно описан по этой ссылке в документации.
Пакет обновления для ручной установки можно скачать по этой ссылке. Демо сайт обновлён.
Огромное спасибо за сообщения об ошибках. Спасибо за донаты. Спасибо, что выбираете InstantCMS.
Поддержите проект
Вы можете стать официальным спонсором или отправить донат, в том числе в криптовалюте.
Вы также здорово поможете, если поставите звезду на GitHub, для нас это очень важно.
Я буду первый спасибо за релиз много всего для себя вкусного в нем нашел.
Огромное спасибо
Отличная новость. Спасибо за релиз. Исправлены хоть и мелкие, но неприятные недочеты.
Спасибо за релиз, давно не обновлялся и не тестировал версию с биллингом. Подскажите, а планируется ли внедрение опции выбора подписки для разных групп пользователей?
К примеру, в биллинге есть 2 типа подписок: «Разработчик+» и «Закачик+». По идее должно быть так: пользователь, состоящий в группе Разработчик, может купить тарифный план «Разработчик+», а пользователи, состоящие в группе Закачик, могут купить подписку «Закачик+». Это удобно, когда на сайте пользователь выбирает при регистрации группу пользователей, и будет нелогично, если в списке подписок пользователя разработчика будет отображаться подписка «Закачик+». В последней тестируемой мной версии биллинга такой функции не было.
Скажите, а почему не отображается Каталог дополнений в админке?
Вероятно поэтому
Вероятно ))
Спасибо большое за обновление!
При обновлении выдало
Fatal error: Uncaught Error: Undefined constant «LANG_BILLING_PLAN_FEATURES_FULL» in
/system/controllers/billing/backend/forms/form_options.php:178 Stack trace: #0 /system/core/form.php(1191): formBillingOptions->init() #1 /upload/installer/install.php(113): cmsForm::getForm() #2 /upload/installer/install.php(66): save_controller_options() #3 /system/core/installer.php(602): install_package() #4 /system/core/installer.php(551): cmsInstaller->callInstallFunc() #5 /system/core/installer.php(161): cmsInstaller->runPackageInstaller() #6 /system/controllers/admin/actions/install_finish.php(27): cmsInstaller->install() #7 /system/core/controller.php(621): actionAdminInstallFinish->run() #8 /system/core/action.php(74): cmsController->runExternalAction() #9 /system/controllers/admin/actions/install.php(18): cmsAction->__call() #10 /system/core/controller.php(621): actionAdminInstall->run() #11 /system/core/controller.php(481): cmsController->runExternalAction() #12 /system/core/frontend.php(18): cmsController->executeAction() #13 /system/core/controller.php(457): cmsFrontend->executeAction() #14 /system/core/core.php(1032): cmsController->runAction() #15 /system/core/core.php(199): cmsCore->runController() #16 /index.php(28): cmsCore->runHttp() #17 {main} thrown in /system/controllers/billing/backend/forms/form_options.php on line 178
После обновления страницы вроде все работает корректно.
Возможны варианты:
Я проверял и ручное и авто обновление, такой проблемы не встретил.
Спасибо за релиз!
Круто, спасибо.
Когда включена продажа полей (поле Текст поста), в списке записей у поста выводится текст, а на странице записи не выводится и есть кнопка Купить. Получается можно получить доступ к контенту поля в списке. Кажется логичнее и в списке постов вместо контента выводить кнопку для покупки, как на странице поста.
Не выводите такое поле в списке
Так то да, самое простое, но не самое логичное) Даже на тестовом сайте такая же история. Немногие готовы заполнять отдельное поле с кратким описанием поста, которое можно было бы выводить в списке вместо основного текста.
Это не баг, просто поля в списке не учитываются. Посмотрим, подумаем, как это учесть для списков не жертвуя производительностью.
При нажатии на пункт Сохранить, система выдаёт «Ошибку в форме»
Даже без каких-либо изменений, выдаёт ошибку при сохранении.
Во кладке «Подписки» заполните поля
К сожаление, своим умом не смог разобраться, о каких характеристиках идёт речь и каким образом эти поля могут быть заполнены. Помогите, пожалуйста.
аналогично, не очень понял, что еще надо заполнить, так как при полном заполнении все равно выдает ошибку сохранения.
Я тоже завис на этом моменте. Было бы юзерфрендли, если была бы сразу подсказка, что необходимо заполнить.
Приветствую! При открытии ранее написанной публикации и попытке её отредактировать в «Редактор личных сообщений», пропадает элемент <details> и всё его содержимое, на версии 2.18.0 такого не было.
Redactor не правился в этой версии. Вероятно у вас были кастомные правки. Используйте tiny.
У тини вероятно встроена еще некая премиум версия? А то на одном из проектов появилось уведомление, что надо приобрести премиум, так как тестовый период завершился? Есть вроде еще форк тини, который позволяет пользоваться без ограничений. А если Lexical появится, то вообще супер)
что с комментариями? сначала отправить комментарий не мог, потом смог:) сейчас комментарии с проблемой нет
проблема с виджетом Категории, не сохраняется, ругается на заполненную форму

какое значение не ставь, не реагирует
Вообще пресеты скорее всего не должны быть обязательными для выбора, так как не всем нужны пресеты для категорий.
видимо так и было, каждый день это не трогаешь, а тут хотел посмотреть, что изменилось исходя из описания релиза, и все, не сохранятся.
Уверены, что это штатный виджет? Я видел, писали о этой проблеме, так и не смог повторить.
абсолютно уверен, проверил на двух сайтах, после обновления вот так.
Если «определяется автоматически», виджет не сохраняется. А если выбрать тип контента, то сохраняется.
Вот так сохраняется

если вас смущают какие то иконки после доступа:) То это от шаблона Next Modern
вот такая же ситуация на чистом сайте

Понял, да, ошибка. Откройте файл /system/controllers/content/widgets/categories/options.form.php и удалите примерно в 16 строке:
спасибо сохраняется, НО! нет возможности вывода без пресетов обложек. Удаляешь пресет, а оно все равно с ними отображается.
И это подтверждаю. Файл /system/controllers/content/actions/widget_cats_presets_ajax.php заменить
на
так да, вроде все починилось
Заметил еще на 2.18 вроде как есть интересный баг, когда на странице выведен виджет формы, например виджет Поиска. При попытке сохранить отправляет на страницу поиска. В файле /templates/modern/controllers/content/item_form.tpl.php корректировка позволила решить эту проблему. В 2.18.1 ни у кого не было такой?
После обновления сайт работает нормально. Так держать!
Круто, спасибо!
А в СЕО-шаблон не добавили выражение для родительской категории?
Нет. Опишите максимально подробно.
Смотрите, существует категория с названием Photoshop, в ней вложенные подкатегории Graphics, Brushes и т.д.
В тайтл записи через SEO шаблон нужно вывести так: Название плагина для Photoshop. Это не получится сделать, т.к. нет выражения чисто для родительской категории. Есть тэг {category}, и он работает, но только если выбрать одну родительскую категорию и не выбирать подкатегорию. А если кладешь запись в Photoshop/Graphics, то в тайтле получается Название плагина для Graphics
да, мне тоже давно актуально
Похоже, обновление выполнено, но сообщение Доступно обновление 2.18.1 не исчезает
а нет, исчезла 😀
Гуру подскажите пожалуйста, почему может так после обновления:
Fatal error: Uncaught TypeError: cmsWysiwyg::getEditor(): Argument #1 ($name) must be of type string, null given, called in /system/fields/html.php on line 227 and defined in /system/core/wysiwyg.php:28 Stack trace: #0 /system/fields/html.php(227): cmsWysiwyg::getEditor() #1 /system/fields/editorjs.php(103): fieldHtml->store() #2 /system/core/form.php(866): fieldEditorjs->store() #3 /system/controllers/content/actions/item_edit.php(160): cmsForm->parse() #4 /system/core/controller.php(636): actionContentItemEdit->run() #5 /system/core/controller.php(476): cmsController->runExternalAction() #6 /system/core/frontend.php(18): cmsController->executeAction() #7 /system/core/controller.php(452): cmsFrontend->executeAction() #8 /system/controllers/content/frontend.php(29): cmsController->runAction() #9 /system/core/controller.php(501): content->route() #10 /system/core/frontend.php(18): cmsController->executeAction() #11 /system/core/controller.php(452): cmsFrontend->executeAction() #12 /system/core/core.php(1032): cmsController->runAction() #13 /system/core/core.php(199): cmsCore->runController() #14 /index.php(28): cmsCore->runHttp() #15 {main} thrown in /system/core/wysiwyg.php on line 28
Строгая типизация в PHP 8+. Если проще — то поле editorjs не передаёт имя редактора, либо передаёт null. Смотрите что в методе store() в поле editorjs
Это поле видимо не адаптировано под php 8 instantcms.ru/forum/redaktor-editorjs.html
Ответил вам в ЛС
Спасибо, все работает!
Спасибо огромное за релиз! Не уверен, что нужно писать сюда, но раньше такой проблемы никогда не было. Короче не могу удалить уведомления в админке
Нажима. на крестик и… ничего не происходит. Прошу проверить и помочь пофиксить.
На демо сайте instantcms ситуация аналогична!
В файл github.com/instantsoft/icms2/blob/0d89b034baf84a8c949dc7652b5200178f33eba7/system/controllers/messages/actions/notice_action.php#L12 добавлена проверка на csrf_token, который при запросе из админки не добавляется.
Чтобы исправить ошибку откройте файл templates\admincoreui\js\admin-core.js
и замените строку В ДВУХ МЕСТАХ
на строку
вот на картинке
кнопки действий в уведомлениях в админке заработают.
Не забудьте почистить кеш браузера, так как это правки в js файле, который может быть закеширован браузером.
А line 236 не надо менять?
надо. поправил коммент.
На самом сайте тоже такая же ситуация.
В messages.js уже вроде как есть, но не работает.
Скорее всего у вас свой шаблон с необновленным файлом templates/modern/js/messages.js
Посмотрите коммит github.com/instantsoft/icms2/commit/d2275e1e3fbb4c3d68f7db9851bab619aa870d42#diff-3b7f942e6074e79f6a7dc31a6d87450d8e98f53221e7f4a45417d1443cccccd8
Там вроде везде проставлены csrf токены
Верно свой, но он использует templates/default/js/messages.js Своего файла в js не содержит. На default работает, на своем нет. Странная ситуация.
Вероятно, что проблема не тут messages.js. Берите файлы с шаблона модерн или дефаулт и по папке или по файлу заменяйте их в своём шаблоне, пока не найдете проблемный файл. Делайте бакап шаблона сначала.
Обновился. Спасибо за работу.
А ткните носом плст, где найти отдельно компонент биллинг, а то мой выдрючивается с коробки, попробовать переустановить...
Конкретно проблема в конвертации валюты сайта в рубли, врёт, при правильно прописанных значениях....
Благодарю.
Отдельно его уже нет. Только в коробке.
Протестируйте ещё робокассу если есть возможность. У меня не работает. Возможно надо и другие варианты кроме кассы и юмани проверить, так как эти два варианта работают.
Обнаружил случайно сегодня такой баг. Если переходишь из поиска на страницу, в которой виджет выводиться не должен, так как в нем добавлен адрес страницы в опции «отрицательная маска», то виджет показывается, так как вероятно к концу страницы добавляется «хвост» яндекса ?ysclid=mnuc2s0dit
Есть варианты как побороть этот недуг?