InstantCMS 2.18.1

1.4K

Всем привет!

Новая версия 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, для нас это очень важно.

+8
maxisoft maxisoft 1 месяц назад #

Я буду первый спасибо за релиз много всего для себя вкусного в нем нашел.

+3
dChirkis dChirkis 1 месяц назад #

Огромное спасибо

+6
Zau4man Zau4man 1 месяц назад #

Отличная новость. Спасибо за релиз. Исправлены хоть и мелкие, но неприятные недочеты.

+4
SergeySheff SergeySheff 1 месяц назад #

Спасибо за релиз, давно не обновлялся и не тестировал версию с биллингом. Подскажите, а планируется ли внедрение опции выбора подписки для разных групп пользователей?

К примеру, в биллинге есть 2 типа подписок: «Разработчик+» и «Закачик+». По идее должно быть так: пользователь, состоящий в группе Разработчик, может купить тарифный план «Разработчик+», а пользователи, состоящие в группе Закачик, могут купить подписку «Закачик+». Это удобно, когда на сайте пользователь выбирает при регистрации группу пользователей, и будет нелогично, если в списке подписок пользователя разработчика будет отображаться подписка «Закачик+». В последней тестируемой мной версии биллинга такой функции не было.

+1
SamsonovSP SamsonovSP 1 месяц назад #

Скажите, а почему не отображается Каталог дополнений в админке?

+2
Fuze Fuze 1 месяц назад #

Вероятно поэтому

+1
SamsonovSP SamsonovSP 1 месяц назад #

Вероятно ))

+1
Def Def 1 месяц назад #

Спасибо большое за обновление!

При обновлении выдало

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

После обновления страницы вроде все работает корректно.

0
Fuze Fuze 1 месяц назад #

Возможны варианты:

  • у вас не opcache или он каким то образом захардкожен (движок не может сбросить кэш)
  • у вас языковые файлы по какой-то причине не заменились

Я проверял и ручное и авто обновление, такой проблемы не встретил.

+1
F_a_R_i_D F_a_R_i_D 1 месяц назад #

Спасибо за релиз!

0
Clear Clear 1 месяц назад #

Круто, спасибо.

0
olegbro olegbro 1 месяц назад #

Когда включена продажа полей (поле Текст поста), в списке записей у поста выводится текст, а на странице записи не выводится и есть кнопка Купить. Получается можно получить доступ к контенту поля в списке. Кажется логичнее и в списке постов вместо контента выводить кнопку для покупки, как на странице поста. 

0
Fuze Fuze 1 месяц назад #

Получается можно получить доступ к контенту поля в списке.

Не выводите такое поле в списке

0
olegbro olegbro 1 месяц назад #

Так то да, самое простое, но не самое логичное) Даже на тестовом сайте такая же история. Немногие готовы заполнять отдельное поле с кратким описанием поста, которое можно было бы выводить в списке вместо основного текста.

0
Fuze Fuze 1 месяц назад #

Это не баг, просто поля в списке не учитываются. Посмотрим, подумаем, как это учесть для списков не жертвуя производительностью.

0
А.Саган А.Саган 1 месяц назад #

При нажатии на пункт Сохранить, система выдаёт «Ошибку в форме»

Даже без каких-либо изменений, выдаёт ошибку при сохранении.

Изображение

+1
Fuze Fuze 1 месяц назад #

Во кладке «Подписки» заполните поля

0
А.Саган А.Саган 1 месяц назад #

К сожаление, своим умом не смог разобраться, о каких характеристиках идёт речь и каким образом эти поля могут быть заполнены. Помогите, пожалуйста.

Изображение

+1
Def Def 27 дней назад #

аналогично, не очень понял, что еще надо заполнить, так как при полном заполнении все равно выдает ошибку сохранения.

+1
Def Def 1 месяц назад #

Я тоже завис на этом моменте. Было бы юзерфрендли, если была бы сразу подсказка, что необходимо заполнить.

0
ReY ReY 1 месяц назад #

Приветствую! При открытии ранее написанной публикации и попытке её отредактировать в «Редактор личных сообщений», пропадает элемент <details> и всё его содержимое, на версии 2.18.0 такого не было.

0
Fuze Fuze 1 месяц назад #

Redactor не правился в этой версии. Вероятно у вас были кастомные правки. Используйте tiny.

+1
Def Def 1 месяц назад #

У тини вероятно встроена еще некая премиум версия? А то на одном из проектов появилось уведомление, что надо приобрести премиум, так как тестовый период завершился? Есть вроде еще форк тини, который позволяет пользоваться без ограничений. А если Lexical появится, то вообще супер)

rshabalin rshabalin 1 месяц назад #
Комментарий удален
0
kalikimaka kalikimaka 1 месяц назад #

что с комментариями? сначала отправить комментарий не мог, потом смог:) сейчас комментарии с проблемой нет

0
kalikimaka kalikimaka 1 месяц назад #

проблема с виджетом Категории, не сохраняется, ругается на заполненную форму
Изображение

какое значение не ставь, не реагирует

0
Def Def 1 месяц назад #

Вообще пресеты скорее всего не должны быть обязательными для выбора, так как не всем нужны пресеты для категорий. 

0
kalikimaka kalikimaka 1 месяц назад #

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

0
Fuze Fuze 1 месяц назад #

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

0
kalikimaka kalikimaka 1 месяц назад #

абсолютно уверен, проверил на двух сайтах, после обновления вот так.

Изображение

Если  «определяется автоматически», виджет не сохраняется. А если выбрать тип контента, то сохраняется.

Изображение

Вот так сохраняется

Изображение

0
kalikimaka kalikimaka 1 месяц назад #

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

вот такая же ситуация на чистом сайте
Изображение

+1
Fuze Fuze 1 месяц назад #

Понял, да, ошибка. Откройте файл /system/controllers/content/widgets/categories/options.form.php и удалите примерно в 16 строке:

  1. if (!$ctype_name) {
  2. return $list;
  3. }
0
kalikimaka kalikimaka 1 месяц назад #

спасибо сохраняется, НО! нет возможности вывода без пресетов обложек. Удаляешь пресет, а оно все равно с ними отображается.

+1
Fuze Fuze 1 месяц назад #

И это подтверждаю. Файл /system/controllers/content/actions/widget_cats_presets_ajax.php заменить

  1. return $this->cms_template->renderJSON($presets);

на

  1. return $this->cms_template->renderJSON(['' => ''] + $presets);
0
kalikimaka kalikimaka 1 месяц назад #

так да, вроде все починилось

0
Def Def 1 месяц назад #

Заметил еще на 2.18 вроде как есть интересный баг, когда на странице выведен виджет формы, например виджет Поиска. При попытке сохранить отправляет на страницу поиска. В файле /templates/modern/controllers/content/item_form.tpl.php корректировка позволила решить эту проблему. В 2.18.1 ни у кого не было такой?

Изображение

0
Антон Антон 1 месяц назад #

После обновления сайт работает нормально. Так держать!

0
Karina99 Karina99 1 месяц назад #

Круто, спасибо!
А в СЕО-шаблон не добавили выражение для родительской категории? 

0
Fuze Fuze 1 месяц назад #

Нет. Опишите максимально подробно.

+1
Karina99 Karina99 1 месяц назад #

Смотрите, существует категория с названием Photoshop, в ней вложенные подкатегории Graphics, Brushes и т.д.
В тайтл записи через SEO шаблон нужно вывести так: Название плагина для Photoshop. Это не получится сделать, т.к. нет выражения чисто для родительской категории. Есть тэг {category}, и он работает, но только если выбрать одну родительскую категорию и не выбирать подкатегорию. А если кладешь запись в Photoshop/Graphics, то в тайтле получается Название плагина для Graphics

0
TOPg TOPg 1 месяц назад #

да, мне тоже давно актуально

0
vov137 vov137 30 дней назад #

Похоже, обновление выполнено, но сообщение  Доступно обновление 2.18.1 не исчезает

0
vov137 vov137 30 дней назад #

а нет, исчезла 😀

0
Def Def 27 дней назад #

Гуру подскажите пожалуйста, почему может так после обновления:

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

+1
Pechora.Dev 🐻 Pechora.Dev 🐻 27 дней назад #

Строгая типизация в PHP 8+. Если проще — то поле editorjs не передаёт имя редактора, либо передаёт null. Смотрите что в методе store() в поле editorjs

0
Def Def 27 дней назад #

Это поле видимо не адаптировано под php 8 instantcms.ru/forum/redaktor-editorjs.html

0
Pechora.Dev 🐻 Pechora.Dev 🐻 27 дней назад #

Ответил вам в ЛС 

0
Def Def 27 дней назад #

Спасибо, все работает!

+2
Yuran Yuran 26 дней назад #

Спасибо огромное за релиз! Не уверен, что нужно писать сюда, но раньше такой проблемы никогда не было. Короче не могу удалить уведомления в админке  

Изображение

Нажима. на крестик и… ничего не происходит. Прошу проверить и помочь пофиксить.

0
Yuran Yuran 26 дней назад #

На демо сайте instantcms ситуация аналогична!

+4
Zau4man Zau4man 26 дней назад #

В файл github.com/instantsoft/icms2/blob/0d89b034baf84a8c949dc7652b5200178f33eba7/system/controllers/messages/actions/notice_action.php#L12 добавлена проверка на csrf_token, который при запросе из админки не добавляется.

Чтобы исправить ошибку откройте файл templates\admincoreui\js\admin-core.js

и замените строку В ДВУХ МЕСТАХ

  1. var url = $('#pm_notices_window').data('action-url');

на строку

  1. var url = $('#pm_notices_window').data('action-url') + '?csrf_token='+icms.forms.getCsrfToken();

вот на картинке

Изображение

кнопки действий в уведомлениях в админке заработают.

Не забудьте почистить кеш браузера, так как это правки в js файле, который может быть закеширован браузером.

0
pupsik pupsik 26 дней назад #

А line 236 не надо менять?

+1
Zau4man Zau4man 26 дней назад #

надо. поправил коммент.

0
DeusSpa DeusSpa 18 дней назад #

На самом сайте тоже такая же ситуация.

В messages.js уже вроде как есть, но не работает.

0
Zau4man Zau4man 18 дней назад #

Скорее всего у вас свой шаблон с необновленным файлом ‎templates/modern/js/messages.js

Посмотрите коммит github.com/instantsoft/icms2/commit/d2275e1e3fbb4c3d68f7db9851bab619aa870d42#diff-3b7f942e6074e79f6a7dc31a6d87450d8e98f53221e7f4a45417d1443cccccd8

Там вроде везде проставлены csrf токены

0
DeusSpa DeusSpa 18 дней назад #

Верно свой, но он использует ‎templates/default/js/messages.js Своего файла в js не содержит. На default работает, на своем нет. Странная ситуация. 

  1. var pm_notices_window = $('#pm_notices_window');
  2.  
  3. var url = pm_notices_window.data('action-url'); #508
  4.  
  5. var form_data = {
  6. notice_id: id,
  7. action_name: name
  8. action_name: name,
  9. csrf_token: self.csrf_token
  10. };
  11.  
  12. ****************
  13. var pm_notices_window = $('#pm_notices_window');
  14. var url = pm_notices_window.data('action-url'); #548
  15.  
  16. $.post(url, {action_name: 'clear_notice', csrf_token: self.csrf_token}, function(result) {
0
pupsik pupsik 18 дней назад #

Вероятно, что проблема не тут messages.js. Берите файлы с шаблона модерн или дефаулт и по папке или по файлу заменяйте их в своём шаблоне, пока не найдете проблемный файл. Делайте бакап шаблона сначала.

+1
pupsik pupsik 26 дней назад #

Обновился. Спасибо за работу.

0
ELk ELk 17 дней назад #

А ткните носом плст, где найти отдельно компонент биллинг, а то мой выдрючивается с коробки, попробовать переустановить... 

Конкретно проблема в конвертации валюты сайта в рубли, врёт, при правильно прописанных значениях....

Благодарю.

+1
Litemir Litemir 17 дней назад #

Отдельно его уже нет. Только в коробке. 

0
Def Def 7 дней назад #

Протестируйте ещё робокассу если есть возможность. У меня не работает. Возможно надо и другие варианты кроме кассы и юмани проверить, так как эти два варианта работают.

0
Def Def 4 часа назад #

Обнаружил случайно сегодня такой баг. Если переходишь из поиска на страницу, в которой виджет выводиться не должен, так как в нем добавлен адрес страницы в опции «отрицательная маска», то виджет показывается, так как вероятно к концу страницы добавляется «хвост» яндекса ?ysclid=mnuc2s0dit

Есть варианты как побороть этот недуг?

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.