0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 942 Просмотров
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Добрый день, друзья. Прошу помощи в работе с Joomla  !

Проблема с админкой, а именно с полем type="editor", которые вызывается через type="subform".

Как выглядит проблема:

Допустим в админке в поле type="subform" через кнопку "+" мы добавляем 2 поля type="editor" (TinyMCE). Если мы попробуем нажать на кнопку "Изображение" во втором TinyMCE, откроется окно медиа менеджера - так и должно быть. Но выбрав изображение и нажав на кнопку "Вставить" окно медиа менеджера не закрывается (а должно). Закрыв окно медиа менеджера через кнопку "Закрыть" мы обнаруживаем, что наша картинка таки вставилась, но вставилась не во второе поле, а в первое. А кнопку "Изображение" мы нажимали именно во втором поле и хотели, чтобы изображение вставилось именно во второе поле.

Чтобы увидеть проблему своими глазами, прикладываю модуль:

1) установите модуль стандартно (В админке он будет у вас называться "Блок: Табы")
2) во вкладке "Модуль" в группе полей "Табы" нажмите на кнопку "+" чтобы добавился набор полей для второго таба
3) в поле "Контент таба" второго таба нажмите на кнопку "Изображение" wysiwyg-редактора TinyMCE
4) в открывшемся медиа менеджере выберите стандартное изображение "joomla_black.png" (или любое другое изображение), и нажмите на кнопку "Вставить". Вы увидите первую проблему - окно медие менеджера не закроется, хотя должно  :dry:
5) закройте окно медиа менеджера через "Х" или кнопку "Закрыть"
6) посмотрите в поле wysiwyg-редактора первого таба. Вы увидите вторую проблему - изображение вставилось в поле "Контент таба" первого таба, но кнопку "Изображение" вы нажимали во втором поле!  *RTFM*

Эту проблему я заметил еще в Joomla 3.9.13. В 3.9.16 проблема сохраняется.

Я уверен что проблема не в моем коде. Т.к. я просто добавил в манифесте поле:

Код
<field 
type="subform"
name="tab"
formsource="modules/mod_taby001/fields/fields1.xml"
min="1" max="30"
multiple="true"
groupByFieldset="true"
label="Табы"
description=""
layout="joomla.form.field.subform.repeatable-table"
/>

, которое вызывает fields1.xml с:

Код
<field 	
type="editor"
name="text"
label="Контент таба"
description=""
buttons="true"
filter="JComponentHelper::filterText"
/>

http://temp.bombus.pp.ua/mod_taby001.zip
« Последнее редактирование: 15.04.2020, 23:44:58 от batiskaf »
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Друзья, хотя бы подтвердите, действительно ли я правильно понимаю, что это проблема самой Joomla?
Для проверки просто в любой модуль добавьте поле type="subform", которое будет вызывать повторяющееся поле type="editor", и добавьте во второе поле type="editor" картинку через стандартную кнопку "Изображение"
« Последнее редактирование: 16.04.2020, 15:19:23 от batiskaf »
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Друзья, здесь есть кто-то?) На форуме карантин?) Отзовитесь)
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
Судя по всему у полей редакотра совпадают IDы. Попробуйте сменить имя поля. Но, скорее всего, без допила такое не получится. Общих советов дать не могу - это надо смотреть конкретно ваш случай.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Спасибо за ваш ответ.

Цитировать
Судя по всему у полей редакотра совпадают IDы
Перепроверил, идентификаторы разные.

Цитировать
Попробуйте сменить имя поля
Сменил, ситуация не изменилась

Цитировать
... это надо смотреть конкретно ваш случай
Свой пример я приложил только для того, чтоб коллегам было проще убедиться в проблеме. Просто добавьте в любой присутствующий у вас модуль поле type="subform", которое будет вызывать  type="editor" -ы, и вы увидите описанную мной проблему (например, в mod_custom). Я более чем у верен, что это косяк кода Joomla, и думаю, что он требует внимания специалистов, т.к. эта проблема получается глобальна, поэтому обратился на форум, где есть прекрасные знатоки движка, такие как b2z и robert на чьих статьях я вникал в код движка и многие другие ребята, которые всегда дают дельные советы.

« Последнее редактирование: 17.04.2020, 13:23:33 от batiskaf »
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
Возможно, вы правы. Воспроизвести не удалось.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Возможно, вы правы. Воспроизвести не удалось.
Снова спасибо вам за ответ. Уточните, пожалуйста, воспроизвести не удалось - не удалось воспроизвести описанную мной проблему, или не удалось воспроизвести корректность работы связки subform + editor? Просто для меня не очень однозначно прозвучал Ваш ответ.
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
Поле "Табы" с добавлением строк появилось в модуле, но строки пустые.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Поле "Табы" с добавлением строк появилось в модуле, но строки пустые.
после попытки добавить изображение?
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
после попытки добавить изображение?
Некуда добавлять. Вы можете сделать полноценный модуль для демонстрации проблемы, либо запустить тестовый сервер и предоставить доступ к нему. Тогда смогу посмотреть.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Во-первых, sivers, огромное вам спасибо что вообще уделяете время моему вопросу. Мне бы хотелось, чтобы на него обратили внимание больше разработчиков, с учетом того, что моя тема имеет уже больше 100 просмотров, а внимание уделили только вы, но проблема в моем понимании глобальна. Я понимаю, что никто мне тут ничего не должен, но все же хотелось бы привлечь внимание к ней.

Во-вторых, возможно, прикрепив пример модуля, я ввел вас в заблуждение ссылаясь на свой код. Но проблема не связана именно со моим кодом - уверен в этом на 99%.

Вы пишете "Некуда добавлять" или "Поле "Табы" с добавлением строк появилось в модуле, но строки пустые" но я не могу по вашим ответам понять, о чем именно вы говорите. Поля не появились в админке или во фронтэнде? Если вы про фронтэнд, то о нем речь и не шла. Проблема видна сразу по админке. Для ее понимания фронтэнд вообще не нужен.

Давайте вообще абстрагируемся от приложенного мной модуля. Я думал что так будет проще людям увидеть проблему, но добился этим противоположного результата.

Вы можете просто внести 2 кусочка кода в ваш mod_custom и убедиться в проблеме. Это займем 3 минуты (реально 3). Ниже я опишу как эту проблему может увидеть каждый на примере модуля mod_custom. Или можно просто скачать мой модуль из первого сообщения.

Итак:

1. Я устанавливаю чистую версию Joomla 3.9.16 (последняя версия), скачанную с оф сайта на локальный сервер

2. Захожу в папку стандартного всем нам хорошо известного модуля com_custom по адресу modules\mod_custom\ (стандартный модуль вывода произвольного HTML-кода, который устанавливается сразу с самим движком)

3. В файл манифеста этого модуля (modules\mod_custom\mod_custom.xml) в строку 40 (сразу после объявления настроек поля name="prepare_content", можно и в другое место, не важно) вставляю код:

Код
<field 
type="subform"
name="test_subform"
formsource="modules/mod_custom/fields.xml"
min="2" max="30"
multiple="true"
groupByFieldset="true"
label="test subform"
description=""
layout="joomla.form.field.subform.repeatable-table"
/>

Это стандартный код из официальной документации Joomla, который добавляет поле type="subform". Этот тип поля предусматривает вывод в админке повторяющихся полей, которые берутся из файла modules/mod_custom/fields.xml. Шаблон отображения повторяющихся полей: Joomla.form.field.subform.repeatable-table. Количество отображаемых по умолчанию полей: min="2".

4. В папке modules/mod_custom/ рядом с манифестом mod_custom.xml создаю файл fields.xml, на который ссылается добавленное мной поле type="subform".  Добавляю в этот файл код:

Код
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fieldset name="field_item" label="">
<field
type="editor"
name="test_editor"
label="test editor"
description=""
buttons="true"
filter="JComponentHelper::filterText"
/>
</fieldset>
</form>

Это стандартный код для добавления поля type="editor", - который добавляет textarea с wysiwyg-редактором в качестве повторяющегося поля для type="subform", объявленного ранее в манифесте mod_custom.xml.

5. В админке перехожу в менеджер модулей, и нажимаю на кнопку "Создать". Открывается страница выбора типа модулей. Выбираю модуль "HTML-код". Это тип модуля, в который я добавил 2 поля, описанные выше.

6. Открывается окно редактирования экземпляра модуля "HTML-код". Перехожу на вкладку "Основные параметры" - на эту вкладку мы добавили наше тестовое поле type="subform". Вижу поле "test subform" - наше поле type="subform". Оно отображает 2 поля с wysiwyg-редакторами type="editor" (я специально указал min="2" для type="subform" на шаге №3, чтоб было проще)

7. В поле второго wysiwyg-редактора нажимаю на кнопку "Изображение"

8. В открывшемся окне медиа-менеджера выбираю изображение (любое), и нажимаю на кнопку "Вставить".  Но! Кнопка вставить не закрывает окно медиа-менеджера, а должна  *RTFM*. Это первая проблема. Закрываю окно медиа-менеджера нажатием на кнопку "Закрыть" или "Х".

9. Смотрю на первое! поле wysiwyg-редактора, и вижу что картинка, которую я выбрал, добавилась именно туда. Но работал я с wysiwyg-редактором второго поля, и вставиться она должна была во второе поле, а не в первое  *RTFM*. Это проблема номер два.

Не важно, что будет на фротэнде. Проблема уже видна и она на бэке. Сохранив, и выведя данные на фронт, картинка будет в первом поле а не во втором. Но добавлял я ее во второе поле. Та же проблема будет, если мы бы нажали не на кнопку "Изображение", а, скажем на кнопку добавления модуля "Модуль" - шорткод модуля попадет в первое поле, а мы работаем со вторым. Думаю, и с кнопкой "Материал" будет то же. По сути, не важно с каким из wysiwyg-редакторов мы работаем - 1, 2, 25, все данные всеравно добавляются только в первый wysiwyg-редактор.

Как видите, хоть берем мой модуль, хоть стандартный джумловский, проблема от этого не зависит. Я прав? Или я что-то не учел? Оба типа полей, которые я использую - стандартные и я использую именно тот код, который присутствует в официальной документации. Никаких своих классов, переопределения стилей, скриптов-обработчиков, ничего кроме стандартного кода.

Прокомментируйте, пожалуйста.
« Последнее редактирование: 17.04.2020, 22:03:33 от batiskaf »
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
Прокомментируйте, пожалуйста.
Вот теперь получилось воспроизвести вашу проблему.
Но исправить не смог.
Думаю, что проблема кроется в скрипте /media/media/js/popup-imagemanager.js, который обращается к фреймам (на которых построен он сам и поле редактора) не через ИДы, а через коллекцию. Поэтому срабатывает на первом. Посмотрите скрипт. При нажатии на кнопку "Вставить" отрабатывает метод onok().
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Цитировать
... получилось воспроизвести вашу проблему.

Спасибо за ответ и с праздниками вас.

Цитировать
Думаю, что проблема кроется в скрипте /media/media/js/popup-imagemanager.js

Как я понимаю, любые правки в файлах Joomla будут снесены при следующем же обновлении. А т.к. найденная мной проблема сохраняется уже минимум 3 обновления в подряд, думаю, ждать официального исправления ошибок кода от Joomla не приходится.
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
Как я понимаю, любые правки в файлах Joomla будут снесены при следующем же обновлении. А т.к. найденная мной проблема сохраняется уже минимум 3 обновления в подряд, думаю, ждать официального исправления ошибок кода от Joomla не приходится.
Скорее всего да. Если очень нужно, то без собственного допила не обойтись. В принципе, инициализация редактора - не такое сложное дело для тех, кто знаком с JS. Можете попробовать, если есть желание. Вот кое что в конспекте есть:
Спойлер
[свернуть]
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

batiskaf

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Попробовал потестировать type="editor" внутри type="repeatable", но это вообще жесть)))))
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Наткнулся на подобную проблему - слежу на новостями
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Я думаю, что такое просто не было предусмотрено. Я бы не сказал, что это ошибка. Это вероятно больше недоработка.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
modal типы полей внутри subform тоже не работают. Кто-то решал подобное?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема вызова модели компонента из модуля

Автор platonische

Ответов: 1
Просмотров: 573
Последний ответ 24.04.2020, 18:32:32
от platonische
[РЕШЕНО] Subform запись и чтение

Автор platonische

Ответов: 8
Просмотров: 1148
Последний ответ 19.01.2019, 10:01:10
от ghostcom
Если нужно добавить поле в subform repeatable своим ява скриптом - как сделать?

Автор Progreccor

Ответов: 7
Просмотров: 868
Последний ответ 03.04.2018, 16:03:54
от Progreccor
Field type media multiple

Автор epps

Ответов: 5
Просмотров: 1395
Последний ответ 22.12.2017, 13:43:52
от lesh1j
Проблема с токеном

Автор Aleks.Denezh

Ответов: 25
Просмотров: 1892
Последний ответ 21.11.2017, 01:12:45
от SeBun