Перейти к публикации

Ошибка проверки доп. полей типа «Список» в 10.2


Рекомендованные сообщения

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

Стал выяснять, на что конкретно ругается. Путем добавления после текста уведомления в /modules/inc/editnews.php нехитрой конструкции «+$(this).attr('id')» (кстати, было бы здорово увидеть какую-нибудь реализацию указания места ошибки в следующем релизе, хотя бы такую ;) ), обнаружил что это три активны для этой категории доп.поля типа select.

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

Проблему пока вылечил убийством « {$uid}» с 580 строки /modules/inc/xfields.php (собственно, в блоке где задается вывод селектов) — как я понимаю, на работу не должно повлиять

Информация из автопроверки:

Версия DataLife Engine: 10.2

Тип лицензии скрипта: Лицензия активирована

Операционная система: Windows NT 6.1

Версия PHP: 5.3.28

Версия MySQL: 5.1.72-community MySQLi

Информация о GD: GD Version: bundled (2.1.0 compatible), FreeType Support: Enabled, FreeType Linkage: with freetype, T1Lib Support: Disabled, GIF Read Support: Enabled, GIF Create Support: Enabled, JPEG Support: Enabled, PNG Support: Enabled, WBMP Support: Enabled, XPM Support: Enabled, XBM Support: Enabled, JIS-mapped Japanese Font Support: Disabled,

Module mod_rewrite Неопределено

Безопасный режим: Выключен

Выделено оперативной памяти: 128M

Отключенные функции: Неопределено

Максимальный размер загружаемого файла: 30 Mb

Размер свободного места на диске: 5.4 Gb

Ссылка на сообщение
Поделиться на других сайтах

Доп. поле имеющий тип список обязательно к заполнению, и не может быть пустым.

Ссылка на сообщение
Поделиться на других сайтах

Доп. поле имеющий тип список обязательно к заполнению, и не может быть пустым.

Так оно и не пустое, естественно. Везде какой-нибудь вариант выбран, пустой опции вообще не предусмотрено.

Обязательность заполнения им тоже пробовал отрубать — никакой реакции.

Причем эта фигня происходит и с новыми материалами, и при редактировании старых

Ссылка на сообщение
Поделиться на других сайтах

Так оно и не пустое, естественно. Везде какой-нибудь вариант выбран, пустой опции вообще не предусмотрено.

Протестировал на чистом дистрибутиве сейчас специально, никаких проблем в данном вопросе не зафиксировано.

Обязательность заполнения им тоже пробовал отрубать — никакой реакции.

Каким образом вы это пробовали, если этого пункта и выбора нет если доп. поле имеет тип список.

Ссылка на сообщение
Поделиться на других сайтах

Каким образом вы это пробовали, если этого пункта и выбора нет если доп. поле имеет тип список.

Руками, проставив единичку в xfields.txt

А я, кстати, понял, откуда там этот $uid берется. Там же цикл, foreach. И если перед доп.полем типа «список» было обязательное текстовое доп.поле, оно получит значение $uid из прошлой итерации и, соответственно, присвоит многострадальному блоку с селектом характеристику essential.

А проверку оно, естественно, не проходит, потому что эта самая проверка ищет значение для тега с аттрибутом rel="essential", а этот самый аттрибут опциям в селекте не присваивается за ненадобностью. Нет аттрибута — нет искомого значения — проверка не прошла, досвидос.

Соответственно, баг должен воспроизвестись если создать обязательное текстовое доп.поле, а после него — доп.поле-список )

Лечиться может либо убиранием $uid из селекта вообще, как сделал я, либо принудительным заданием в этой секции $uid='', либо перефигачивать всю проверку форм )

Изменено пользователем Драугмот
Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

Проблема подтверждена и будет исправлена в следующей версии скрипта. В принципе то что сделали вы для исправления верно, нужно убрать {$uid} из 580 строки /modules/inc/xfields.php.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...