Skip to content

Commit ca6e1ab

Browse files
authored
Merge pull request #84 from iMattPro/add-faq
Add FAQ Help
2 parents e07034c + 129a4e2 commit ca6e1ab

File tree

4 files changed

+187
-0
lines changed

4 files changed

+187
-0
lines changed

event/listener.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public static function getSubscribedEvents()
8686
'core.acp_main_notice' => 'compatibility_notice',
8787
'core.acp_board_config_edit_add' => 'acp_pwa_options',
8888
'core.validate_config_variable' => 'validate_pwa_options',
89+
'core.help_manager_add_block_after' => 'wpn_faq',
8990
];
9091
}
9192

@@ -279,6 +280,45 @@ public function validate_pwa_options($event)
279280
}
280281
}
281282

283+
/**
284+
* Add Web Push info to the phpBB FAQ
285+
*
286+
* @param \phpbb\event\data $event The event object
287+
* @return void
288+
*/
289+
public function wpn_faq($event)
290+
{
291+
if ($event['block_name'] === 'HELP_FAQ_BLOCK_BOOKMARKS')
292+
{
293+
$this->language->add_lang('webpushnotifications_faq', 'phpbb/webpushnotifications');
294+
295+
$this->template->assign_block_vars('faq_block', [
296+
'BLOCK_TITLE' => $this->language->lang('HELP_FAQ_WPN'),
297+
'SWITCH_COLUMN' => false,
298+
]);
299+
300+
$questions = [
301+
'HELP_FAQ_WPN_WHAT_QUESTION' => 'HELP_FAQ_WPN_WHAT_ANSWER',
302+
'HELP_FAQ_WPN_HOW_QUESTION' => 'HELP_FAQ_WPN_HOW_ANSWER',
303+
'HELP_FAQ_WPN_IOS_QUESTION' => 'HELP_FAQ_WPN_IOS_ANSWER',
304+
'HELP_FAQ_WPN_SESSION_QUESTION' => 'HELP_FAQ_WPN_SESSION_ANSWER',
305+
'HELP_FAQ_WPN_SUBBING_QUESTION' => 'HELP_FAQ_WPN_SUBBING_ANSWER',
306+
'HELP_FAQ_WPN_GENERAL_QUESTION' => 'HELP_FAQ_WPN_GENERAL_ANSWER',
307+
];
308+
309+
$faq_rows = [];
310+
foreach ($questions as $question => $answer)
311+
{
312+
$faq_rows[] = [
313+
'FAQ_QUESTION' => $this->language->lang($question),
314+
'FAQ_ANSWER' => $this->language->lang($answer),
315+
];
316+
}
317+
318+
$this->template->assign_block_vars_array('faq_block.faq_row', $faq_rows);
319+
}
320+
}
321+
282322
/**
283323
* Add errors to the error array
284324
*
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
/**
3+
*
4+
* phpBB Browser Push Notifications. An extension for the phpBB Forum Software package.
5+
*
6+
* @copyright (c) 2024, phpBB Limited <https://www.phpbb.com>
7+
* @license GNU General Public License, version 2 (GPL-2.0)
8+
*
9+
*/
10+
11+
/**
12+
* DO NOT CHANGE
13+
*/
14+
if (!defined('IN_PHPBB'))
15+
{
16+
exit;
17+
}
18+
19+
if (empty($lang) || !is_array($lang))
20+
{
21+
$lang = [];
22+
}
23+
24+
// DEVELOPERS PLEASE NOTE
25+
//
26+
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
27+
//
28+
// Placeholders can now contain order information, e.g. instead of
29+
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
30+
// translators to re-order the output of data while ensuring it remains correct
31+
//
32+
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
33+
// equally where a string contains only two placeholders which are used to wrap text
34+
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
35+
//
36+
// Some characters you may want to copy&paste:
37+
// ’ » “ ” …
38+
//
39+
40+
$lang = array_merge($lang, [
41+
'HELP_FAQ_WPN' => 'Web Push Notifications for Browsers',
42+
'HELP_FAQ_WPN_WHAT_QUESTION' => 'What are web push notifications?',
43+
'HELP_FAQ_WPN_WHAT_ANSWER' => 'Web push notifications enhance phpBB’s notification system by allowing real-time notifications to be sent directly to your desktop or mobile device, even if you’re not actively browsing the forum. These notifications function like app alerts, providing instant updates for private messages, post interactions, moderation actions, and more.',
44+
'HELP_FAQ_WPN_HOW_QUESTION' => 'How can I receive forum notification alerts on my computer or mobile device?',
45+
'HELP_FAQ_WPN_HOW_ANSWER' => 'Navigate to ‘Notification options’ in your UCP (User Control Panel) and click ‘Enable web push notifications.’ After enabling it, your browser may prompt you to allow the forum to send notifications to your device—make sure to grant permission. If you’re still not receiving notifications, check your device’s system settings to ensure notifications are enabled for your browser.',
46+
'HELP_FAQ_WPN_IOS_QUESTION' => 'How does it work on mobile devices (iOS/Android)?',
47+
'HELP_FAQ_WPN_IOS_ANSWER' => 'For certain devices, such as those running iOS or iPadOS, you may need to add the forum site to your Home Screen for push notifications to work. This essentially makes the forum function like a standalone web app. Refer to your device’s operating system instructions to enable push notifications for <a href="https://www.xda-developers.com/how-enable-safari-notifications-iphone/" target="_blank">iOS / iPadOS</a> or <a href="https://support.google.com/chrome/answer/3220216?hl=en&co=GENIE.Platform%3DAndroid&oco=0" target="_blank">Android</a>.',
48+
'HELP_FAQ_WPN_SESSION_QUESTION' => 'Will I receive notifications if I am logged out?',
49+
'HELP_FAQ_WPN_SESSION_ANSWER' => 'Yes, you will continue to receive notifications even if you’re logged out.',
50+
'HELP_FAQ_WPN_SUBBING_QUESTION' => 'Why are the “Enable Push Notifications” buttons disabled?',
51+
'HELP_FAQ_WPN_SUBBING_ANSWER' => 'If the “Enable Push Notifications” buttons appear but cannot be clicked, your browser or device likely doesn’t support push notifications. Try using a different browser or device that supports this feature.',
52+
'HELP_FAQ_WPN_GENERAL_QUESTION' => 'What if I’m still having trouble receiving notifications after enabling them?',
53+
'HELP_FAQ_WPN_GENERAL_ANSWER' => 'Make sure this forum is allowed to send notifications in your browser settings. Also, verify that your device’s system settings permit notifications from your web browser or app. Some browsers deliver notifications even when closed, while others only do so when the browser is open. <a href="https://github.com/phpbb-extensions/webpushnotifications?tab=readme-ov-file#browser-support" target="_blank">Here is a browser support table.</a>',
54+
]);
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
/**
3+
*
4+
* phpBB Browser Push Notifications. An extension for the phpBB Forum Software package.
5+
*
6+
* @copyright (c) 2024, phpBB Limited <https://www.phpbb.com>
7+
* @license GNU General Public License, version 2 (GPL-2.0)
8+
*
9+
*/
10+
11+
/**
12+
* DO NOT CHANGE
13+
*/
14+
if (!defined('IN_PHPBB'))
15+
{
16+
exit;
17+
}
18+
19+
if (empty($lang) || !is_array($lang))
20+
{
21+
$lang = [];
22+
}
23+
24+
// DEVELOPERS PLEASE NOTE
25+
//
26+
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
27+
//
28+
// Placeholders can now contain order information, e.g. instead of
29+
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
30+
// translators to re-order the output of data while ensuring it remains correct
31+
//
32+
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
33+
// equally where a string contains only two placeholders which are used to wrap text
34+
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
35+
//
36+
// Some characters you may want to copy&paste:
37+
// ’ » “ ” …
38+
//
39+
40+
$lang = array_merge($lang, [
41+
'HELP_FAQ_WPN' => 'Браузерные уведомления',
42+
'HELP_FAQ_WPN_WHAT_QUESTION' => 'Что такое браузерные уведомления?',
43+
'HELP_FAQ_WPN_WHAT_ANSWER' => 'Браузерные уведомления отправляются непосредственно на настольное или мобильное устройство получателя, даже если он не находится на данной конференции. Такие уведомления работают как и уведомления от приложений, обеспечивая немедленное информирование о личных сообщениях, событиях в форумах, модераторских активностях и так далее.',
44+
'HELP_FAQ_WPN_HOW_QUESTION' => 'Как получать браузерные уведомления на компьютер или мобильное устройство?',
45+
'HELP_FAQ_WPN_HOW_ANSWER' => 'Откройте Личный раздел и на закладке «Личный настройки» перейдите в блок «Изменить настройки уведомлений». Щёлкните кнопку «Включить» рядом с заголовком «Браузерные push—уведомления». При этом может поступить запрос от браузера на разрешение получения уведомлений от данного сайта. Для получения уведомлений необходимо принять данный запрос. Если после этих настроек браузерные уведомления не работают, убедитесь, что системные настройки устройства разрешают выбранному браузеру отправлять уведомления.',
46+
'HELP_FAQ_WPN_IOS_QUESTION' => 'Как настроить браузерные уведомления на мобильном устройстве (iOS/Android)?',
47+
'HELP_FAQ_WPN_IOS_ANSWER' => 'Для некоторых устройств, например, использующих iOS или iPadOS, может потребоваться добавить сайт конференции на домашний экран для того, чтобы получать браузерные уведомления. При этом сайт конференции будет работать как самостоятельное приложение. Обратитесь к инструкции по использованию устройства для того, чтобы включить уведомления для <a href="https://www.xda-developers.com/how-enable-safari-notifications-iphone/" target="_blank">iOS / iPadOS</a> или <a href="https://support.google.com/chrome/answer/3220216?hl=en&co=GENIE.Platform%3DAndroid&oco=0" target="_blank">Android</a>.',
48+
'HELP_FAQ_WPN_SESSION_QUESTION' => 'Будут ли приходить браузерные уведомления, если пользователь вышел из своей учётной записи на конференции?',
49+
'HELP_FAQ_WPN_SESSION_ANSWER' => 'Да, браузерные уведомления продолжат поступать, даже если пользователь вышел из своей учётной записи на конференции.',
50+
'HELP_FAQ_WPN_SUBBING_QUESTION' => 'Почему кнопка «Включить» рядом с заголовком «Браузерные push—уведомления» неактивна?',
51+
'HELP_FAQ_WPN_SUBBING_ANSWER' => 'Если кнопка «Включить» рядом с заголовком «Браузерные push—уведомления» неактивна, возможно, выбранный браузер или мобильное устройство не поддерживают браузерные уведомления. Попробуйте использовать другой браузер или устройство, поддерживающие данную функцию.',
52+
'HELP_FAQ_WPN_GENERAL_QUESTION' => 'Браузерные уведомления включены и настроены, но всё равно не поступают. Что делать?',
53+
'HELP_FAQ_WPN_GENERAL_ANSWER' => 'Убедитесь, что сайту конференции разрешено отправлять уведомления в настройках выбранного браузера, а также что в системных настройках самого устройства отправка уведомлений разрешена для данного браузера или приложения сайта. В некоторых браузерах уведомления действуют, только если браузер открыт или работает в фоновом режиме. Для получения более подробной инфомации <a href="https://github.com/phpbb-extensions/webpushnotifications?tab=readme-ov-file#browser-support" target="_blank">обратитесь к таблице.</a>',
54+
]);

tests/event/listener_test.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ public function test_getSubscribedEvents()
150150
'core.acp_main_notice',
151151
'core.acp_board_config_edit_add',
152152
'core.validate_config_variable',
153+
'core.help_manager_add_block_after',
153154
], array_keys(\phpbb\webpushnotifications\event\listener::getSubscribedEvents()));
154155
}
155156

@@ -421,4 +422,42 @@ public function test_validate_pwa_options($validate, $cfg_array, $expected_error
421422

422423
self::assertEquals($expected_error, $error);
423424
}
425+
426+
public function test_wpn_faq()
427+
{
428+
$this->language->add_lang('webpushnotifications_faq', 'phpbb/webpushnotifications');
429+
430+
$this->template->expects(self::once())
431+
->method('assign_block_vars')
432+
->withConsecutive(
433+
['faq_block', [
434+
'BLOCK_TITLE' => $this->lang('HELP_FAQ_WPN'),
435+
'SWITCH_COLUMN' => false
436+
]]
437+
);
438+
439+
$this->template->expects(self::once())
440+
->method('assign_block_vars_array')
441+
->with('faq_block.faq_row', [
442+
['FAQ_QUESTION' => $this->lang('HELP_FAQ_WPN_WHAT_QUESTION'), 'FAQ_ANSWER' => $this->lang('HELP_FAQ_WPN_WHAT_ANSWER')],
443+
['FAQ_QUESTION' => $this->lang('HELP_FAQ_WPN_HOW_QUESTION'), 'FAQ_ANSWER' => $this->lang('HELP_FAQ_WPN_HOW_ANSWER')],
444+
['FAQ_QUESTION' => $this->lang('HELP_FAQ_WPN_IOS_QUESTION'), 'FAQ_ANSWER' => $this->lang('HELP_FAQ_WPN_IOS_ANSWER')],
445+
['FAQ_QUESTION' => $this->lang('HELP_FAQ_WPN_SESSION_QUESTION'), 'FAQ_ANSWER' => $this->lang('HELP_FAQ_WPN_SESSION_ANSWER')],
446+
['FAQ_QUESTION' => $this->lang('HELP_FAQ_WPN_SUBBING_QUESTION'), 'FAQ_ANSWER' => $this->lang('HELP_FAQ_WPN_SUBBING_ANSWER')],
447+
['FAQ_QUESTION' => $this->lang('HELP_FAQ_WPN_GENERAL_QUESTION'), 'FAQ_ANSWER' => $this->lang('HELP_FAQ_WPN_GENERAL_ANSWER')],
448+
]
449+
);
450+
451+
$event = new \phpbb\event\data([
452+
'block_name' => 'HELP_FAQ_BLOCK_BOOKMARKS',
453+
]);
454+
455+
$this->set_listener();
456+
$this->listener->wpn_faq($event);
457+
}
458+
459+
private function lang($string)
460+
{
461+
return $this->language->lang($string);
462+
}
424463
}

0 commit comments

Comments
 (0)