1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-08-06 12:02:45 +03:00

Notifications: added user preference UI & logic

Includes testing to cover.
Also added file missing from previous commit.
This commit is contained in:
Dan Brown
2023-07-25 17:06:48 +01:00
parent 45e75edf05
commit 100b28707c
7 changed files with 210 additions and 7 deletions

View File

@@ -3,17 +3,16 @@
namespace BookStack\Users\Controllers;
use BookStack\Http\Controller;
use BookStack\Settings\UserNotificationPreferences;
use BookStack\Settings\UserShortcutMap;
use BookStack\Users\UserRepo;
use Illuminate\Http\Request;
class UserPreferencesController extends Controller
{
protected UserRepo $userRepo;
public function __construct(UserRepo $userRepo)
{
$this->userRepo = $userRepo;
public function __construct(
protected UserRepo $userRepo
) {
}
/**
@@ -47,6 +46,35 @@ class UserPreferencesController extends Controller
return redirect('/preferences/shortcuts');
}
/**
* Show the notification preferences for the current user.
*/
public function showNotifications()
{
$preferences = (new UserNotificationPreferences(user()));
return view('users.preferences.notifications', [
'preferences' => $preferences,
]);
}
/**
* Update the notification preferences for the current user.
*/
public function updateNotifications(Request $request)
{
$data = $this->validate($request, [
'preferences' => ['required', 'array'],
'preferences.*' => ['required', 'string'],
]);
$preferences = (new UserNotificationPreferences(user()));
$preferences->updateFromSettingsArray($data['preferences']);
$this->showSuccessNotification(trans('preferences.notifications_update_success'));
return redirect('/preferences/notifications');
}
/**
* Update the preferred view format for a list view of the given type.
*/
@@ -123,7 +151,7 @@ class UserPreferencesController extends Controller
{
$validated = $this->validate($request, [
'language' => ['required', 'string', 'max:20'],
'active' => ['required', 'bool'],
'active' => ['required', 'bool'],
]);
$currentFavoritesStr = setting()->getForCurrentUser('code-language-favourites', '');