mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-18 18:44:16 +00:00
Expand notifications settings.
This commit is contained in:
@@ -65,38 +65,7 @@ class HomeController extends Controller
|
||||
$email = $pref->data;
|
||||
}
|
||||
|
||||
// admin notification settings:
|
||||
$notifications = [];
|
||||
foreach (config('notifications.notifications.owner') as $key => $info) {
|
||||
if($info['enabled']) {
|
||||
$notifications[$key] = app('fireflyconfig')->get(sprintf('notification_%s', $key), true)->data;
|
||||
}
|
||||
}
|
||||
//
|
||||
|
||||
return view('admin.index', compact('title', 'mainTitleIcon', 'email', 'notifications'));
|
||||
}
|
||||
|
||||
public function notifications(Request $request): RedirectResponse
|
||||
{
|
||||
foreach (config('notifications.notifications.owner') as $key => $info) {
|
||||
$value = false;
|
||||
if ($request->has(sprintf('notification_%s', $key))) {
|
||||
$value = true;
|
||||
}
|
||||
app('fireflyconfig')->set(sprintf('notification_%s', $key), $value);
|
||||
}
|
||||
$url = (string)$request->get('slackUrl');
|
||||
if ('' === $url) {
|
||||
app('fireflyconfig')->delete('slack_webhook_url');
|
||||
}
|
||||
if (UrlValidator::isValidWebhookURL($url)) {
|
||||
app('fireflyconfig')->set('slack_webhook_url', $url);
|
||||
}
|
||||
|
||||
session()->flash('success', (string)trans('firefly.notification_settings_saved'));
|
||||
|
||||
return redirect(route('admin.index'));
|
||||
return view('admin.index', compact('title', 'mainTitleIcon', 'email'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,6 +75,7 @@ class HomeController extends Controller
|
||||
*/
|
||||
public function testMessage()
|
||||
{
|
||||
die('disabled.');
|
||||
Log::channel('audit')->info('User sends test message.');
|
||||
|
||||
/** @var User $user */
|
||||
|
@@ -24,6 +24,8 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Http\Controllers\Admin;
|
||||
|
||||
use FireflyIII\Http\Controllers\Controller;
|
||||
use FireflyIII\Http\Requests\NotificationRequest;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class NotificationController extends Controller
|
||||
@@ -39,6 +41,27 @@ class NotificationController extends Controller
|
||||
$discordUrl = app('fireflyconfig')->get('discord_webhook_url', '')->data;
|
||||
$channels = config('notifications.channels');
|
||||
|
||||
return view('admin.notifications.index', compact('title', 'subTitle', 'mainTitleIcon', 'subTitleIcon', 'channels', 'slackUrl','discordUrl'));
|
||||
|
||||
// admin notification settings:
|
||||
$notifications = [];
|
||||
foreach (config('notifications.notifications.owner') as $key => $info) {
|
||||
if($info['enabled']) {
|
||||
$notifications[$key] = app('fireflyconfig')->get(sprintf('notification_%s', $key), true)->data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return view('admin.notifications.index', compact('title', 'subTitle', 'mainTitleIcon', 'subTitleIcon', 'channels', 'slackUrl','discordUrl','notifications'));
|
||||
}
|
||||
|
||||
public function postIndex(NotificationRequest $request): RedirectResponse {
|
||||
|
||||
var_dump($request->getAll());
|
||||
exit;
|
||||
// app('fireflyconfig')->set(sprintf('notification_%s', $key), $value);;
|
||||
|
||||
session()->flash('success', (string)trans('firefly.notification_settings_saved'));
|
||||
|
||||
return redirect(route('admin.index'));
|
||||
}
|
||||
}
|
||||
|
70
app/Http/Requests/NotificationRequest.php
Normal file
70
app/Http/Requests/NotificationRequest.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/*
|
||||
* NotificationRequest.php
|
||||
* Copyright (c) 2024 james@firefly-iii.org.
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see https://www.gnu.org/licenses/.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Requests;
|
||||
|
||||
use FireflyIII\Support\Request\ChecksLogin;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class NotificationRequest extends FormRequest
|
||||
{
|
||||
use ChecksLogin;
|
||||
use ConvertsDataTypes;
|
||||
|
||||
public function getAll(): array
|
||||
{
|
||||
$return = [];
|
||||
foreach (config('notifications.notifications.owner') as $key => $info) {
|
||||
$value = false;
|
||||
if ($this->has(sprintf('notification_%s', $key))) {
|
||||
$value = true;
|
||||
}
|
||||
$return[$key] = $value;
|
||||
}
|
||||
$return['discord_url'] = $this->convertString('discordUrl');
|
||||
$return['slack_url'] = $this->convertString('slackUrl');
|
||||
return $return;
|
||||
// if (UrlValidator::isValidWebhookURL($url)) {
|
||||
// app('fireflyconfig')->set('slack_webhook_url', $url);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// var_dump($this->all());
|
||||
// exit;
|
||||
// return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Rules for this request.
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
// fixed
|
||||
return [
|
||||
//'password' => 'required',
|
||||
];
|
||||
}
|
||||
|
||||
}
|
@@ -2481,7 +2481,8 @@ return [
|
||||
'admin_maintanance_expl' => 'Some nifty buttons for Firefly III maintenance',
|
||||
'admin_maintenance_clear_cache' => 'Clear cache',
|
||||
'owner_notifications' => 'Admin notifications',
|
||||
'owner_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. It will be sent over ALL configured channels. Some channels are configured in your environment variables, others can be set in your <a href="#">notifications settings</a>.',
|
||||
'owner_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. It will be sent over ALL configured channels. Some channels are configured in your environment variables, others can be set here.',
|
||||
'channel_settings' => 'Settings for notification channels',
|
||||
'settings_notifications' => 'Settings for notifications',
|
||||
'title_owner_notifications' => 'Owner notifications',
|
||||
'owner_notification_check_user_new_reg' => 'User gets post-registration welcome message',
|
||||
|
@@ -17,7 +17,7 @@
|
||||
</li>
|
||||
<li><a href="{{ route('admin.links.index') }}">{{ 'journal_link_configuration'|_ }}</a></li>
|
||||
<li><a href="{{ route('admin.update-check') }}">{{ 'update_check_title'|_ }}</a></li>
|
||||
<li><a href="{{ route('admin.notifications') }}">{{ 'settings_notifications'|_ }}</a></li>
|
||||
<li><a href="{{ route('admin.notification.index') }}">{{ 'settings_notifications'|_ }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -31,32 +31,6 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{ route('admin.notifications') }}" method="post">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<div class="box box-default">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'owner_notifications'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>
|
||||
{{ 'owner_notifications_expl'|_ }}
|
||||
</p>
|
||||
{% for notification, value in notifications %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input value="1" {% if true == value %}checked{% endif %} type="checkbox" name="notification_{{ notification }}"> {{ trans('firefly.owner_notification_check_'~notification) }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{# {{ ExpandedForm.text('slackUrl', slackUrl, {'label' : 'slack_url_label'|_}) }} #}
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<button type="submit" class="btn btn-success">
|
||||
<span class="fa fa-check-circle"></span> {{ ('save_notification_settings')|_ }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="box box-default">
|
||||
|
@@ -4,7 +4,7 @@
|
||||
{{ Breadcrumbs.render }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row" xmlns="http://www.w3.org/1999/html">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
||||
<form action="{{ route('admin.notification.post') }}" method="post">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@@ -13,6 +13,17 @@
|
||||
<h3 class="box-title">{{ 'notification_settings'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>
|
||||
{{ trans('firefly.owner_notifications_expl') }}
|
||||
</p>
|
||||
{% for notification, value in notifications %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input value="1" {% if true == value %}checked{% endif %} type="checkbox" name="notification_{{ notification }}"> {{ trans('firefly.owner_notification_check_'~notification) }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<p style="margin-top:2em;">{{ 'channel_settings'|_ }}</p>
|
||||
{{ ExpandedForm.text('slackUrl', slackUrl, {'label' : 'slack_url_label'|_}) }}
|
||||
{{ ExpandedForm.text('discordUrl', discordUrl, {'label' : 'discord_url_label'|_}) }}
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user