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

Расширения 3.1.x на конкретных примерах

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Real_Haron
phpBB 1.2.1
Сообщения: 22
Стаж: 8 лет 2 месяца
Благодарил (а): 2 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение Real_Haron »

Конечно можно, я так и сделал, но дело в том, что $start проходит через валидацию здесь: https://github.com/phpbb/phpbb/blob/3.1 ... m.php#L153

Глупо будет дублировать оную валидацию в модах. Ниже кстати одна одна из фич для мода, где это пригодилось бы. Метод вешается на событие core.viewforum_get_topic_data. Он делает заголовки на странице форума кликабельными, с сортировкой по клику. А также убирает форму сортировки снизу, которую я считаю несколько... выбивающейся из дизайна.

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

    public function generate_sort_links($event)
    {
        $args = [
            'f'         => $event['forum_id'],
            'sd'     => $event['sort_dir'] == 'd' ? 'a' : 'd',
            'start'    => request_var('start', 0) // I very take view prevalidated $event['start'] variable here.
        ];
        
        $sort_by_keys = [
            'r' => 'REPLIES',
            'v' => 'VIEWS',
            's' => 'TOPICS',
            't' => 'LAST_POST'
        ];
        
        $base_url     = $this -> phpbb_root_path . 'viewforum.' . $this -> php_ext;
        $dir_marker = $event['sort_dir'] == 'd' ? ' ▼' : ' ▲';
        
        $tpl_vars = [];
        foreach ($sort_by_keys as $k => $lc)
        {
            $tpl_vars['L_' . $lc] = '<a class="underline" href="' . append_sid($base_url, array_merge($args, ['sk' => $k])) . '">' . $this -> user -> lang[$lc] . ($event['sort_key'] == $k ? $dir_marker : '') . '</a>'; 
        }
        
        $this -> template -> assign_vars(array_merge($tpl_vars, [
            'S_SELECT_SORT_DAYS'    => false // Disable sorting form
        ]));
    } 
dferyg.png
Отправлено спустя 1 минуту 59 секунд:
Эх, подсветка синтаксиса на вашем форуме была бы очень кстати.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Real_Haron 19.02.2016 20:56, всего редактировалось 1 раз.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение rxu »

Резонно.
Real_Haron писал(а): подсветка синтаксиса на вашем форуме была бы очень кстати
Стандартная: [code=php].
Изображение
Аватара пользователя
Real_Haron
phpBB 1.2.1
Сообщения: 22
Стаж: 8 лет 2 месяца
Благодарил (а): 2 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение Real_Haron »

rxu писал(а): Стандартная
Да, что-то я... Пятница, вечер, бывает. Сделайте коммит кто-нибудь, пожалуйста.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение rxu »

Real_Haron писал(а): Сделайте коммит кто-нибудь, пожалуйста.
А самому? ;)
Изображение
Аватара пользователя
Real_Haron
phpBB 1.2.1
Сообщения: 22
Стаж: 8 лет 2 месяца
Благодарил (а): 2 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение Real_Haron »

А разве там любой желающий может коммитить что хочет?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение rxu »

Любой. Но не коммитить, а делать пулл реквесты. Девелоперы проверяют и коммитят, если всё ок.
Изображение
Аватара пользователя
Real_Haron
phpBB 1.2.1
Сообщения: 22
Стаж: 8 лет 2 месяца
Благодарил (а): 2 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение Real_Haron »

И как его сделать? Объясните пожалуйста, на пальцах? Я дошёл до текстового поля, куда надо что-то написать. Что? Не работал с гитхабом. Как-то это мимо меня проходило.
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 5 месяцев
Благодарил (а): 257 раз
Поблагодарили: 195 раз

Re: Расширения 3.1.x на конкретных примерах

Сообщение Sumanai »

rxu писал(а): если всё ок
Это сделать с первого раза весьма сложно, да и со второго. Нужно создать тикет, указать его в пояснении к коммиту и пул реквесту, соблюдая определённый формат, и так далее.
Даже простейшее исправление опечатки у меня не приняли без прохождения всех кругов бюрократии.
Пошаговое руководство по прохождению квеста на принятия изменения:
Git
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение rxu »

Real_Haron писал(а): Не работал с гитхабом. Как-то это мимо меня проходило.
С вашими навыками кодинга навыки работы с Git - must have. Всегда пригодится.
Если кратко, устанавливаете клиент Git (зависит от ОС), регистрируетесь, клонируете нужный репо в Гитхабе и локально, создаете свою ветку от актуального состояния репо, делаете коммит в свой репо, делаете пулл реквест.
Sumanai писал(а): Нужно создать тикет, указать его в пояснении к коммиту и пул реквесту, соблюдая определённый формат, и так далее.
Тикет - пять минут, указание в коммите заключается в обычном теге типа [ticket/number] title (максимум 80 символов), потом через пустую строку PHPBB3-NNNNN (номер тикета), в пояснении к самому коммиту - обычная веб-ссылка на него.

Звучит страшно, но в реале ничего сложного.
Изображение
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

Re: Расширения 3.1.x на конкретных примерах

Сообщение LavIgor »

Я пользуюсь примерно следующим алгоритмом.

Предполагается, что Вы уже сделали следующее и знаете, как с этим работать:
  • Установили программу для работы с Git, например Github for Windows.
  • Имеете аккаунт на сайте https://phpbb.com/ и выполнили вход на сайте https://tracker.phpbb.com/.
  • Имеете аккаунт на сайте https://github.com/ и вошли на сайт.
  • Умеете вводить команды в консоль и менять текущий рабочий каталог с помощью команды cd.
  • Имеете базовые знания английского языка.
Меня больше всего интересует работа с командной строкой, поэтому далее речь пойдёт о Git Bash. Эта консоль идёт в комплекте с Github for Windows, но Вы можете использовать и другую консоль, поддерживающую команды Git. Далее для простоты буду называть понравившуюся Вам консоль, поддерживающую команды Git, просто словом "консоль".

Работаю на localhost, файлы движка синхронизируются с GitHub автоматически.

Для простоты скажу, что первоначально (всего один раз для начала работы с движком) понадобится сделать форк репозитория phpbb через Web-интерфейс GitHub, выполнить

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

git clone https://github.com/ВАШ_ЛОГИН_НА_GITHUB/phpbb.git .
в каталоге на Ваш выбор и настроить корень сайта на путь к каталогу с добавкой /phpBB.

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

Примеры основаны на правках ветки 3.1.x.

Как же внести свои правки (пусть даже простейшие - исправления опечаток в комментариях)?
Шаг 1. Убеждаемся, что у нас стоит относительно свежая версия phpBB ветки, в которую мы хотим внести правки.
Если это не так, в консоли выполняем:

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

git checkout 3.1.x
git pull upstream 3.1.x
Шаг 2. Вносим правки и убеждаемся, что они работают (если ранее localhost был настроен для соответствующего каталога).

Шаг 3. Открываем https://tracker.phpbb.com/ и нажимаем на кнопку Create.
Выбираем Issue Type в зависимости от характера правок (исправление бага/новая функция). Для добавления событий и мелких правок подойдёт тип Improvement (хотя для событий можно и New Feature).
Пишем Summary - название будущего ticket. Это краткое и ёмкое описание того, что исправляют Ваши правки.
Пишем Description - подробное описание того, зачем нужны данные исправления.
Остальные поля необязательны, но лучше выбрать текущую версию в списке Affects Version/s, а для событий указать Component/s - Events.
Не забудьте также задать правильный приоритет для исправляемой проблемы.

Шаг 4. Нажимаем на кнопку Create - появляется всплывающее сообщение о созданном ticket.
Нажимаем на ссылку в этом сообщении либо сохраняем/запоминаем номер созданного ticket (указан в самом начале его названия).

Шаг 5. Открываем консоль и выполняем команды:

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

git checkout 3.1.x
git pull upstream 3.1.x
git checkout -b ticket/XXXXX
git add --all .
git commit
Здесь и далее XXXXX - номер нашего ticket, например 12345 для PHPBB3-12345.
Здесь на всякий случай не помешает снова выполнить синхронизацию нашей локальной копии репозитория (вторая строчка в списке команд).

После выполнения команд из списка выше откроется текстовый редактор. В нём уже что-то есть (список вносимых изменений - ещё раз убедитесь, что не добавили ничего лишнего и ничего не забыли), но это можно стереть, если отвлекает.
В редакторе первой строкой вводим [ticket/XXXXX] My edit., где My edit. - произвольное название commit'а (обычно совпадает с названием ticket).
Вторая строка обязательно пустая.
Далее можно добавить подробное описание изменений в этом конкретном commit (после чего снова добавить пустую строку), но это не обязательно.
Следующая, последняя, строка - это полный идентификатор нашего ticket, например PHPBB3-12345.

Шаг 6. Сохраняем изменения в текстовом редакторе и закрываем его.

Шаг 7. Выполняем команду:
git push origin ticket/XXXXX

Шаг 8. Открываем репозиторий phpbb на сайте github.com или свой форк этого репозитория.
GitHub автоматически предложит создать Pull Request для только что сделанных правок - нужно только нажать на соответствующую кнопку и подтвердить свои действия.

В общем-то, всё.

В качестве бонуса отмечу возможность самому добавлять некоторые labels для своих PR с помощью написания комментариев !set Event для добавления/исправления событий и !set Styles для исправления файлов стиля.

Возможно, мой опыт кому-то пригодится.
Аватара пользователя
Real_Haron
phpBB 1.2.1
Сообщения: 22
Стаж: 8 лет 2 месяца
Благодарил (а): 2 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение Real_Haron »

Что-то я уже нехочу участвовать в разработке :). А пресловутая переменная $start, видимо так и будет повторно проверяться в моде.

Но если серъёзно, хороший мануал по работе с репозиторием phpBB, надо бы его вынести и прикрепить в отдельную тему в этом форуме.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение rxu »

Еще надо не забыть задать upstream - алиас основного репо, и origin - алиас своего клонированного.
Изображение
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

Re: Расширения 3.1.x на конкретных примерах

Сообщение LavIgor »

rxu, если не ошибаюсь, при клонировании форка оба имени задаются автоматически.
А при клонировании основного придётся переопределять имена ресурсов, т.к. тот, который мы клонировали, становится origin.
Аватара пользователя
Real_Haron
phpBB 1.2.1
Сообщения: 22
Стаж: 8 лет 2 месяца
Благодарил (а): 2 раза

Re: Расширения 3.1.x на конкретных примерах

Сообщение Real_Haron »

Всем здравствуйте.

Я так понимаю, мода кармы для 3.1.* ещё нету?

Вернуться в «Для разработчиков»