Страница 18 из 30
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 21.11.2017 16:39
Pazh
rxu, возьми любого юзера, назначь ему в правах пользователя пользовательскую роль "Стандартные возможности", сохрани их, а теперь попробуй откатить эти права - запасаюсь попкорном и пивом...
Отправлено спустя 45 минут 11 секунд:
Хее, то что указал выше - это "костыль" для ручного решения проблемы - выбираем роль "Роль не назначена...", выставляем все в Нет и получаем конфетку.
Сам косячокс где-то на стороне фронта, т.к. js функция reset_role вроде отрабатывает, но ajax в php отправляет все равно старое значение id роли
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 21.11.2017 17:33
rxu
Pazh писал(а): ↑21.11.2017 17:24попробуй откатить эти права
Откатить
куда? Я еще раз объясняю - "Роль не назначена" - это не конкретный набор прав, а
любой кроме предустановленных.
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 21.11.2017 18:02
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 роли "забивает" на права, которые мы выбирали ручками (т.е. все в НЕТ) и тупа заменяет их значениями прав из указанной роли (Стандартные возможности).
Так понятно???
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 21.11.2017 18:18
rxu
Можно было сразу написать, в чём конкретно баг? Как Правилами положено.
Исправить не могу.
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 22.11.2017 12:23
Pazh
rxu писал(а): ↑21.11.2017 18:18Можно было сразу написать, в чём конкретно баг?
1. не сохраняются новые права доступа (если они устанавливаются не через роль, а выбираются по одному или через кнопки "Все Да", "Все Нет", "Все НИКОГДА"), если ранее они были установлены через роль. Проверено на всех видах прав доступа - ситуация аналогичная. phpbb3.2.1
2. при изменении прав, текст в span "Роль:" не изменяется с названия текущей роли, на "Роль не назначена..."
Fix:
в файле
adm\style\permission_mask.html
найти:
Добавить после:
Код: Выделить всё
var no_role_assigned = "{L_NO_ROLE_ASSIGNED}";
в файле
adm\style\permissions.js
найти:
Добавить после:
Код: Выделить всё
(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
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 22.11.2017 14:26
Pazh
Модераторы, затрите предложенные мной правки тут Re: Сообщаем об ошибках phpBB 3.2.x разработчикам , они, по большому счету, не нужны в свете предыдущего поста
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 23.11.2017 12:38
Pazh
Концептуальный недочет:
при
выполнении cron задания, как из расширения так и предустановленного в движке, в
$this->language
выдает ТОЛЬКО
en
локаль. Как следствие - невозможность использовать в cron заданиях локализованных переменных и email шаблонов.
Пример из пошагового отладочного режима (debug):
prune_notifications
- предустановленное задание:
- Screenshot_3.jpg (26.09 КБ) 434 просмотра
autogroups_check
- задание официального расширения AutoGroup от команды phpbb:
- Screenshot_1.jpg (35.29 КБ) 434 просмотра
Хотя во всех остальных местах в language все нормально (есть ru, локализованные значение и шаблоны email как движка так и расширений доступны):
- Screenshot_2.jpg (36.18 КБ) 434 просмотра
Отправлено спустя 10 минут 44 секунды:
С одной стороны логично - cron задание может запуститься под любым юзером (у которого может быть выбран язык, отличный от языка конференции по умолчанию ) и поэтому там не используется
$user->setup()
, НО cron все-таки должен подгружать "Язык конференции по умолчанию" и использовать его (на 99,9% конференции он совпадает с языком контента и пользователей).
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 23.11.2017 18:53
rxu
Зачем крону подгружать язык?
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 24.11.2017 10:34
Pazh
Вариантов куча, требующих локализованные значение (например: уведомления, email, логи), да тупо дату к формату русскому не привести - сейчас получается "24 november 2017"
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 02.01.2018 9:55
rxu
Pazh писал(а): ↑22.11.2017 12:23в файле adm\style\permissions.js найти
https://github.com/phpbb/phpbb/pull/5070
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 07.01.2018 8:50
2PiK
Не знаю было или нет, некорректно обрабатываются вложенные бб-коды
code
Код: Выделить всё
$html[] = "/<pre(.*?)>(.*?)<\/pre>/smi";
$bbcode[] = "[code]\\2
";
[/code]
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 07.01.2018 11:23
rxu
2PiK, надо добавлять уникальные айдишники к обрамляющим (самым снешним) тегам.
Код: Выделить всё
[code:123] $html[] = "/<pre(.*?)>(.*?)<\/pre>/smi";
$bbcode[] = "[code]\\2[/code]";
[/code:123]
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 08.01.2018 16:54
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: #{ТЕКУЩЕЕ_ЗНАЧЕНИЕ_ЦВЕТА};"> </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
)
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 11.01.2018 16:28
rxu
Re: Сообщаем об ошибках phpBB 3.2.x разработчикам
Добавлено: 11.01.2018 16:32
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
и замена в указанных функциях
на
Замечание актуально и для всех версий веток 3.1 и 3.2 - если стремиться отказаться от "
говнокода" и делать максимум по гудлайну.