aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar rupak <nnew234567@gmail.com> 2026-01-30 02:19:35 +0545
committerGravatar GitHub <noreply@github.com> 2026-01-29 21:34:35 +0100
commitb59a2101b460200e4276a05f9b8cb4ae7a2e9b62 (patch)
treeef2fec4a132bce5c11b35f7285ecf17ef64b09f8 /app
parentedc750fe444b6af65eccee879a048cf3e0cdd215 (diff)
Add option to enable notifications (#8458)
Closes https://github.com/FreshRSS/FreshRSS/issues/7330 - Default behavior is same - Added FreshRSS_Context::userConf()->html5_disable_notif so that, it determines weather user wants notification. (will not show any even it has permission) (i want default false so disable, so old configs get proper default values) - Added button such that checking it makes it request permission too <img width="707" height="119" alt="image" src="https://github.com/user-attachments/assets/a0fdbc4d-9f15-4644-8753-f0e6c979677f" /> - test notification actually happening (how can i trigger it, do i have to wait it), this code fixes permissions.
Diffstat (limited to 'app')
-rw-r--r--app/Controllers/configureController.php1
-rw-r--r--app/Models/UserConfiguration.php1
-rw-r--r--app/i18n/cs/conf.php3
-rw-r--r--app/i18n/de/conf.php3
-rw-r--r--app/i18n/el/conf.php3
-rw-r--r--app/i18n/en-US/conf.php3
-rw-r--r--app/i18n/en/conf.php11
-rw-r--r--app/i18n/es/conf.php3
-rw-r--r--app/i18n/fa/conf.php3
-rw-r--r--app/i18n/fi/conf.php3
-rw-r--r--app/i18n/fr/conf.php3
-rw-r--r--app/i18n/he/conf.php3
-rw-r--r--app/i18n/hu/conf.php3
-rw-r--r--app/i18n/id/conf.php3
-rw-r--r--app/i18n/it/conf.php3
-rw-r--r--app/i18n/ja/conf.php3
-rw-r--r--app/i18n/ko/conf.php3
-rw-r--r--app/i18n/lv/conf.php3
-rw-r--r--app/i18n/nl/conf.php3
-rw-r--r--app/i18n/oc/conf.php3
-rw-r--r--app/i18n/pl/conf.php3
-rw-r--r--app/i18n/pt-BR/conf.php3
-rw-r--r--app/i18n/pt-PT/conf.php3
-rw-r--r--app/i18n/ru/conf.php3
-rw-r--r--app/i18n/sk/conf.php3
-rw-r--r--app/i18n/tr/conf.php3
-rw-r--r--app/i18n/uk/conf.php3
-rw-r--r--app/i18n/zh-CN/conf.php3
-rw-r--r--app/i18n/zh-TW/conf.php3
-rw-r--r--app/views/configure/display.phtml10
-rw-r--r--app/views/helpers/javascript_vars.phtml1
31 files changed, 98 insertions, 4 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index 893fa5478..3153cb8c8 100644
--- a/app/Controllers/configureController.php
+++ b/app/Controllers/configureController.php
@@ -75,6 +75,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
FreshRSS_Context::userConf()->bottomline_link = Minz_Request::paramBoolean('bottomline_link');
FreshRSS_Context::userConf()->show_nav_buttons = Minz_Request::paramBoolean('show_nav_buttons');
FreshRSS_Context::userConf()->html5_notif_timeout = max(0, Minz_Request::paramInt('html5_notif_timeout'));
+ FreshRSS_Context::userConf()->html5_enable_notif = Minz_Request::paramBoolean('html5_enable_notif');
FreshRSS_Context::userConf()->good_notification_timeout = max(0, Minz_Request::paramInt('good_notification_timeout'));
FreshRSS_Context::userConf()->bad_notification_timeout = max(1, Minz_Request::paramInt('bad_notification_timeout'));
FreshRSS_Context::userConf()->save();
diff --git a/app/Models/UserConfiguration.php b/app/Models/UserConfiguration.php
index 644b27bab..d12316141 100644
--- a/app/Models/UserConfiguration.php
+++ b/app/Models/UserConfiguration.php
@@ -28,6 +28,7 @@ declare(strict_types=1);
* @property string $feverKey
* @property bool $hide_read_feeds
* @property int $html5_notif_timeout
+ * @property bool $html5_enable_notif
* @property int $good_notification_timeout
* @property int $bad_notification_timeout
* @property-read bool $is_admin
diff --git a/app/i18n/cs/conf.php b/app/i18n/cs/conf.php
index 73fb94220..140e03cb9 100644
--- a/app/i18n/cs/conf.php
+++ b/app/i18n/cs/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php
index e73ed001f..3f57416f4 100644
--- a/app/i18n/de/conf.php
+++ b/app/i18n/de/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Keine',
'small' => 'Klein',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Zeige Warnbanner',
diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php
index 8b0a4236d..0d1ba6620 100644
--- a/app/i18n/el/conf.php
+++ b/app/i18n/el/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/en-US/conf.php b/app/i18n/en-US/conf.php
index ba9b55b24..99272f190 100644
--- a/app/i18n/en-US/conf.php
+++ b/app/i18n/en-US/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // IGNORE
'small' => 'Small', // IGNORE
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // IGNORE
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // IGNORE
diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php
index 2e4c20d32..bfc32ec3a 100644
--- a/app/i18n/en/conf.php
+++ b/app/i18n/en/conf.php
@@ -105,14 +105,17 @@ return array(
'none' => 'None',
'small' => 'Small',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification',
+ ),
'notification_timeout' => array(
'bad' => array(
- 'label' => 'Show warning banner', // TODO
- 'seconds' => 'seconds (at least 1)', // TODO
+ 'label' => 'Show warning banner',
+ 'seconds' => 'seconds (at least 1)',
),
'good' => array(
- 'label' => 'Show acknowledgement banner', // TODO
- 'seconds' => 'seconds (0 means not shown)', // TODO
+ 'label' => 'Show acknowledgement banner',
+ 'seconds' => 'seconds (0 means not shown)',
),
),
'privacy' => array(
diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php
index b82e3a364..13c991008 100644
--- a/app/i18n/es/conf.php
+++ b/app/i18n/es/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Nada',
'small' => 'Pequeño',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Mostrar mensaje de advertencia',
diff --git a/app/i18n/fa/conf.php b/app/i18n/fa/conf.php
index 870b49dc8..28ed5039d 100644
--- a/app/i18n/fa/conf.php
+++ b/app/i18n/fa/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'هیچ',
'small' => 'کوچک',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/fi/conf.php b/app/i18n/fi/conf.php
index 7261d270f..790e0a92b 100644
--- a/app/i18n/fi/conf.php
+++ b/app/i18n/fi/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Ei mitään',
'small' => 'Pieni',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Näytä varoituspalkki',
diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php
index 27950983c..e43ee3fd0 100644
--- a/app/i18n/fr/conf.php
+++ b/app/i18n/fr/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Aucun',
'small' => 'Petit',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Activer les notifications',
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Afficher la bannière d’avertissement',
diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php
index f7018c582..7f66859c3 100644
--- a/app/i18n/he/conf.php
+++ b/app/i18n/he/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/hu/conf.php b/app/i18n/hu/conf.php
index d6a362324..b1b9ee2a0 100644
--- a/app/i18n/hu/conf.php
+++ b/app/i18n/hu/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Egyik sem',
'small' => 'Kicsi',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Figyelmeztető sáv megjelenítése',
diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php
index 9163067f9..3c3a9a281 100644
--- a/app/i18n/id/conf.php
+++ b/app/i18n/id/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Tidak ditampilkan',
'small' => 'Kecil',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php
index 60f9c451c..feb4c98a6 100644
--- a/app/i18n/it/conf.php
+++ b/app/i18n/it/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Nessuno',
'small' => 'Piccolo',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Mostra banner con le segnalazioni',
diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php
index 9340bfaef..a0e523786 100644
--- a/app/i18n/ja/conf.php
+++ b/app/i18n/ja/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php
index 9ad972740..b26c72112 100644
--- a/app/i18n/ko/conf.php
+++ b/app/i18n/ko/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/lv/conf.php b/app/i18n/lv/conf.php
index a9eced70b..f6c14d4ce 100644
--- a/app/i18n/lv/conf.php
+++ b/app/i18n/lv/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php
index 315a92f22..b18210bf3 100644
--- a/app/i18n/nl/conf.php
+++ b/app/i18n/nl/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Geen',
'small' => 'Klein',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Waarschuwingsbalk tonen',
diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php
index 77317d612..16bd0e33f 100644
--- a/app/i18n/oc/conf.php
+++ b/app/i18n/oc/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php
index d99faeb84..e45a9cb84 100644
--- a/app/i18n/pl/conf.php
+++ b/app/i18n/pl/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Brak',
'small' => 'Mały',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Pokaż baner ostrzeżenia',
diff --git a/app/i18n/pt-BR/conf.php b/app/i18n/pt-BR/conf.php
index 06d6bf467..92fdb167d 100644
--- a/app/i18n/pt-BR/conf.php
+++ b/app/i18n/pt-BR/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Nenhum',
'small' => 'Pequeno',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Mostrar banner de aviso',
diff --git a/app/i18n/pt-PT/conf.php b/app/i18n/pt-PT/conf.php
index ce3c66760..a4f4e4a5c 100644
--- a/app/i18n/pt-PT/conf.php
+++ b/app/i18n/pt-PT/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php
index 351f29a1a..82dce384f 100644
--- a/app/i18n/ru/conf.php
+++ b/app/i18n/ru/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Отсутствует',
'small' => 'Маленькая',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Показывать баннер предупреждения',
diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php
index 93fc8681d..27e669067 100644
--- a/app/i18n/sk/conf.php
+++ b/app/i18n/sk/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php
index 9d62dc975..8e50ff93d 100644
--- a/app/i18n/tr/conf.php
+++ b/app/i18n/tr/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Yok',
'small' => 'Küçük',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/uk/conf.php b/app/i18n/uk/conf.php
index afcf26c98..91c4ce61f 100644
--- a/app/i18n/uk/conf.php
+++ b/app/i18n/uk/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'Не показувати',
'small' => 'Мала',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/i18n/zh-CN/conf.php b/app/i18n/zh-CN/conf.php
index a1e332db3..7f9bc736f 100644
--- a/app/i18n/zh-CN/conf.php
+++ b/app/i18n/zh-CN/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => '无',
'small' => '小',
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => '显示警告横幅',
diff --git a/app/i18n/zh-TW/conf.php b/app/i18n/zh-TW/conf.php
index 0e5249683..636f8c024 100644
--- a/app/i18n/zh-TW/conf.php
+++ b/app/i18n/zh-TW/conf.php
@@ -105,6 +105,9 @@ return array(
'none' => 'None', // TODO
'small' => 'Small', // TODO
),
+ 'notification' => array(
+ 'html5_enable_notif' => 'Enable notification', // TODO
+ ),
'notification_timeout' => array(
'bad' => array(
'label' => 'Show warning banner', // TODO
diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml
index 6f8e3e1b4..64dcf1b84 100644
--- a/app/views/configure/display.phtml
+++ b/app/views/configure/display.phtml
@@ -232,6 +232,16 @@
</div>
<div class="form-group">
+ <div class="group-controls">
+ <label class="checkbox" for="html5_enable_notif">
+ <input type="checkbox" name="html5_enable_notif" id="html5_enable_notif" value="1"<?=
+ FreshRSS_Context::userConf()->html5_enable_notif ? ' checked="checked"' : '' ?> />
+ <?= _t('conf.notification.html5_enable_notif') ?>
+ </label>
+ </div>
+ </div>
+
+ <div class="form-group">
<label class="group-name" for="html5_notif_timeout"><?= _t('conf.display.notif_html5.timeout') ?></label>
<div class="group-controls">
<input type="number" min="0" max="60" id="html5_notif_timeout" name="html5_notif_timeout" value="<?=
diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml
index 73e047e11..f2203f56e 100644
--- a/app/views/helpers/javascript_vars.phtml
+++ b/app/views/helpers/javascript_vars.phtml
@@ -24,6 +24,7 @@ echo json_encode([
'does_lazyload' => !!FreshRSS_Context::userConf()->lazyload ,
'sides_close_article' => !!FreshRSS_Context::userConf()->sides_close_article,
'sticky_post' => !!FreshRSS_Context::isStickyPostEnabled(),
+ 'html5_enable_notif' => FreshRSS_Context::userConf()->html5_enable_notif,
'html5_notif_timeout' => FreshRSS_Context::userConf()->html5_notif_timeout,
'closeNotification' => [
'good' => FreshRSS_Context::userConf()->good_notification_timeout * 1000,