Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Сообщаем об ошибках phpBB 3.2.x разработчикам

Проблемы с установкой или работой phpBB 3.2.x? Получите помощь здесь!
Внимание: с 7 ноября 2020 года phpBB Group завершено дальнейшее развитие phpBB версии 3.2, а с 1 августа 2024 года будет прекращена её поддержка.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.

Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

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

Отправлено спустя 45 минут 11 секунд:
Хее, то что указал выше - это "костыль" для ручного решения проблемы - выбираем роль "Роль не назначена...", выставляем все в Нет и получаем конфетку.
Сам косячокс где-то на стороне фронта, т.к. js функция reset_role вроде отрабатывает, но ajax в php отправляет все равно старое значение id роли
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение rxu »

Pazh писал(а): 21.11.2017 17:24попробуй откатить эти права
Откатить куда? Я еще раз объясняю - "Роль не назначена" - это не конкретный набор прав, а любой кроме предустановленных.
Изображение
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

rxu, упрямству гордых поем мы песни (с)
phpbb3.2.1
Идем в админку -> Права доступа -> Глобальные права доступа -> Права доступа -> выбираем любого юзера -> выбираем ему роль например "Стандартные возможности" -> нажимаем "Применить права" -> получаем сообщение что все ок и вылетаем на страницу выбора юзера.
Теперь опять выбираем этого же юзера -> в открвшемся окне видим что у него указана роль Стандартные возможности -> при клике на "Подробно" видим права согласно роли "Стандартные возможности". А теперь фокус - нам нужно снести все эти права в Нет - нажимаем "Все НЕТ" - и тут начинаются чудеса: права в табелице встают все в НЕТ (супер), а вот в окошке "Роль:" осталась надпись "Стандартные возможности", хотя те кто хоть раз нормально разбирался с системой прав, то замечал что при любом изменении прав в таблице роль "обнулялась" в "Роль не назначена...". Но это пол беды если просмотреть html код - поле "Роль" - это псевдо выпадающий список (а по факту просто span, а select строкой выше и display:none)
При выборе любого права или кнопок "Все..." вызывается js функцияreset_role('role00'), которая и сбрасывает в скрытом select выбранную роль на "Роль не выбрана..", хотя не плохо бы при этом и span обновлять для полного эффекта.

Но при попытке отправить изменения (сабмит формы при нажатии "Применить права") есть чудо js код в файле adm/style/ajax.js:

Код: Выделить всё

		// Find proper role value
		var roleInput = $fieldset.find('input[name^=role][data-name]');
		if (roleInput.val()) {
			formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' + roleInput.val();
		} else {
			formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' +
				$fieldset.find('select[name="' + roleInput.attr('name') + '"]').val();
		}
И что мы видим - а id роли для отправки в бэк то сначала проверяется из какого-то input-а и если оно есть, то берет его, а не из скрытого select-а - второе условие, а input то оказалось хранит исходное значение роли.
Т.е. в бэк отправляется исходное значение id роли (Стандартные возможности), а php при наличии id роли "забивает" на права, которые мы выбирали ручками (т.е. все в НЕТ) и тупа заменяет их значениями прав из указанной роли (Стандартные возможности).

Так понятно???
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение rxu »

Можно было сразу написать, в чём конкретно баг? Как Правилами положено.
Исправить не могу.
Изображение
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

rxu писал(а): 21.11.2017 18:18Можно было сразу написать, в чём конкретно баг?
1. не сохраняются новые права доступа (если они устанавливаются не через роль, а выбираются по одному или через кнопки "Все Да", "Все Нет", "Все НИКОГДА"), если ранее они были установлены через роль. Проверено на всех видах прав доступа - ситуация аналогичная. phpbb3.2.1

2. при изменении прав, текст в span "Роль:" не изменяется с названия текущей роли, на "Роль не назначена..."

Fix:
в файле adm\style\permission_mask.html найти:

Код: Выделить всё

	var role_options = new Array();
Добавить после:

Код: Выделить всё

	var no_role_assigned = "{L_NO_ROLE_ASSIGNED}";
в файле adm\style\permissions.js найти:

Код: Выделить всё

	t.options[0].selected = true;
Добавить после:

Код: Выделить всё

	(function($)// Avoid conflicts with other libraries
	{
		var parent = $(t).parent();
		parent.find("span[title=Roles]")[0].innerText = no_role_assigned;

		// Find proper role value
		var roleInput = parent.find('input[name^=role][data-name]');
		roleInput.val(0);
	})(jQuery); // Avoid conflicts with other libraries
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

Модераторы, затрите предложенные мной правки тут Re: Сообщаем об ошибках phpBB 3.2.x разработчикам , они, по большому счету, не нужны в свете предыдущего поста
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

Концептуальный недочет:
при выполнении cron задания, как из расширения так и предустановленного в движке, в $this->language выдает ТОЛЬКО en локаль. Как следствие - невозможность использовать в cron заданиях локализованных переменных и email шаблонов.
Пример из пошагового отладочного режима (debug):
prune_notifications - предустановленное задание:
Скриншот 
Screenshot_3.jpg
Screenshot_3.jpg (26.09 КБ) 429 просмотров
autogroups_check - задание официального расширения AutoGroup от команды phpbb:
Скриншот 
Screenshot_1.jpg
Screenshot_1.jpg (35.29 КБ) 429 просмотров
Хотя во всех остальных местах в language все нормально (есть ru, локализованные значение и шаблоны email как движка так и расширений доступны):
Скриншот 
Screenshot_2.jpg
Screenshot_2.jpg (36.18 КБ) 429 просмотров
Отправлено спустя 10 минут 44 секунды:
С одной стороны логично - cron задание может запуститься под любым юзером (у которого может быть выбран язык, отличный от языка конференции по умолчанию ) и поэтому там не используется $user->setup(), НО cron все-таки должен подгружать "Язык конференции по умолчанию" и использовать его (на 99,9% конференции он совпадает с языком контента и пользователей).
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение rxu »

Зачем крону подгружать язык?
Изображение
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

Вариантов куча, требующих локализованные значение (например: уведомления, email, логи), да тупо дату к формату русскому не привести - сейчас получается "24 november 2017"
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение rxu »

Pazh писал(а): 22.11.2017 12:23в файле adm\style\permissions.js найти
https://github.com/phpbb/phpbb/pull/5070
Изображение
2PiK
phpBB 1.4.2
Сообщения: 69
Стаж: 15 лет 7 месяцев
Благодарил (а): 10 раз
Поблагодарили: 12 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение 2PiK »

Не знаю было или нет, некорректно обрабатываются вложенные бб-коды code

Код: Выделить всё

		$html[] = "/<pre(.*?)>(.*?)<\/pre>/smi";
		$bbcode[] = "[code]\\2
";
[/code]
Вложения
screenshot_18-01-07_09-50-07.png
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение rxu »

2PiK, надо добавлять уникальные айдишники к обрамляющим (самым снешним) тегам.

Код: Выделить всё

[code:123]		$html[] = "/<pre(.*?)>(.*?)<\/pre>/smi";
		$bbcode[] = "[code]\\2[/code]";
[/code:123]
Изображение
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

По большому счету не баг, а недочет: есть штатный механизм выбора цвета для чего-то (цвет группы например) с вызовом палитры, НО если необходимо на одной странице вывести возможность выбора нескольких цветов - то тут все радостно "падает" из-за привязки js кода авторами движка к id всего лишь одного элемента.
Fix (актуально и для 3.1 и для 3.2):
в файле assets\javascript\core.js найти строку:

Код: Выделить всё

	$('#color_palette_toggle').click(function(e) {
заменить на:

Код: Выделить всё

	el.parent().find("a.color_palette_toggle").click(function(e) {
Найти:

Код: Выделить всё

	$('#color_palette_placeholder').each(function() {
Заменить на:

Код: Выделить всё

	$('.color_palette_placeholder').each(function() {
в файле styles\prosilver\template\ucp_groups_manage.html найти:

Код: Выделить всё

			[ <a href="#" id="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]
			<div id="color_palette_placeholder" class="color_palette_placeholder hidden" data-orientation="h" data-height="12" data-width="15" data-target="#group_colour"></div>
заменить на:

Код: Выделить всё

			[ <a href="#" class="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]
			<div class="color_palette_placeholder hidden" data-orientation="h" data-height="12" data-width="15" data-target="#group_colour"></div>
в файле adm\style\acp_groups.html найти:

Код: Выделить всё

			[ <a href="#" id="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]</span>
			<div id="color_palette_placeholder" style="display: none;" data-orientation="h" data-height="12" data-width="15" data-target="#group_colour"></div>
заменить на:

Код: Выделить всё

			[ <a href="#" class="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]</span>
			<div style="display: none;" data-orientation="h" data-height="12" data-width="15" data-target="#group_colour"></div>



Для вставки палитры с выбором цвета можно использовать следующий код:

Код: Выделить всё

			<input name="ПО_ЖЕЛАНИЮ" type="text" id="id_colour" value="{ТЕКУЩЕЕ_ЗНАЧЕНИЕ_ЦВЕТА}" size="6" maxlength="6" class="inputbox narrow" />
			<span style="background-color: #{ТЕКУЩЕЕ_ЗНАЧЕНИЕ_ЦВЕТА};">&nbsp;&nbsp;&nbsp;</span>
			[ <a href="#" class="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]
			<div сlass="color_palette_placeholder hidden" data-orientation="h" data-height="12" data-width="15" data-target="#id_colour"></div>
Обратить внимание: значение в data-target должно соответствовать id из вышестоящего input (в примере это id_colour), соответственно при размещении на странице нескольких блоков выбора цвета значения этих id должны быть разными (например id_colour1, id_colour2)
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение rxu »

Изображение
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

Очередной "перл":

Контроллеры расширений должны возвращать Symfony Response объекты. А как правильно обработать в этом свете confirm_box, login_forum_box и login_box? Т.к. все эти функции на конце имеют вызов page_footer() с дефолтным третьим параметром $exit_handle, что приводит к обрыву обработки контроллера и return в контроллере не срабатывает никогда.

В отличие от вызова return $this->helper->render, который так же имеет в конце вызов page_footer(true, false, false);, но уже с нужным третьим параметром $exit_handle равном false

Решение: добавление в указанные функции еще одного параметра $exit_handle = true и замена в указанных функциях

Код: Выделить всё

page_footer();

на

Код: Выделить всё

page_footer(true, true, $exit_handle);
Замечание актуально и для всех версий веток 3.1 и 3.2 - если стремиться отказаться от "говнокода" и делать максимум по гудлайну.
Последний раз редактировалось Pazh 11.01.2018 16:42, всего редактировалось 1 раз.
Помощь в ЛС/email только за WM или ЮMoney
Ответить

Вернуться в «Поддержка phpBB 3.2.x»