diff --git a/includes/view/User_view.php b/includes/view/User_view.php
index db8a4f22..9326f6b2 100644
--- a/includes/view/User_view.php
+++ b/includes/view/User_view.php
@@ -235,7 +235,7 @@ function User_view_shiftentries($needed_angel_type)
{
$shift_info = '
' . $needed_angel_type['name'] . ': ';
+ . '">' . $needed_angel_type['name'] . ': ';
$shift_entries = [];
foreach ($needed_angel_type['users'] as $user_shift) {
@@ -457,8 +457,8 @@ function User_view(
$auth = auth();
$nightShiftsConfig = config('night_shifts');
$user_name = htmlspecialchars(
- $user_source->personalData->first_name) . ' ' . htmlspecialchars($user_source->personalData->last_name
- );
+ $user_source->personalData->first_name
+ ) . ' ' . htmlspecialchars($user_source->personalData->last_name);
$myshifts_table = '';
if ($its_me || $admin_user_privilege) {
$my_shifts = User_view_myshifts(
@@ -554,7 +554,7 @@ function User_view(
]),
div('row user-info', [
div('col-md-2', [
- config('enable_dect') ?
+ config('enable_dect') && $user_source->contact->dect ?
heading(
icon('phone')
. ' '
@@ -562,6 +562,16 @@ function User_view(
. ''
)
: '' ,
+ config('enable_mobile_show') && $user_source->contact->mobile ?
+ $user_source->settings->mobile_show ?
+ heading(
+ icon('phone')
+ . ' '
+ . $user_source->contact->mobile
+ . ''
+ )
+ : ''
+ : '' ,
$auth->can('user_messages') ?
heading(
''
@@ -587,9 +597,9 @@ function User_view(
) : '',
$its_me && count($shifts) == 0
? error(sprintf(
- __('Go to the shifts table to sign yourself up for some shifts.'),
- page_link_to('user_shifts')
- ), true)
+ __('Go to the shifts table to sign yourself up for some shifts.'),
+ page_link_to('user_shifts')
+ ), true)
: '',
$its_me ? ical_hint() : ''
]
diff --git a/resources/lang/de_DE/default.po b/resources/lang/de_DE/default.po
index 4a83a98b..53d10d21 100644
--- a/resources/lang/de_DE/default.po
+++ b/resources/lang/de_DE/default.po
@@ -2969,6 +2969,9 @@ msgstr "DECT"
msgid "settings.profile.mobile"
msgstr "Handy"
+msgid "settings.profile.mobile_show"
+msgstr "Mache meine Handynummer für andere Benutzer sichtbar."
+
msgid "settings.profile.email"
msgstr "E-Mail"
diff --git a/resources/lang/en_US/default.po b/resources/lang/en_US/default.po
index 125f203b..810c2673 100644
--- a/resources/lang/en_US/default.po
+++ b/resources/lang/en_US/default.po
@@ -241,6 +241,9 @@ msgstr "DECT"
msgid "settings.profile.mobile"
msgstr "Mobile"
+msgid "settings.profile.mobile_show"
+msgstr "Show mobile number to other users to contact me."
+
msgid "settings.profile.email"
msgstr "E-Mail"
diff --git a/resources/views/pages/settings/profile.twig b/resources/views/pages/settings/profile.twig
index 10d72044..159b998f 100644
--- a/resources/views/pages/settings/profile.twig
+++ b/resources/views/pages/settings/profile.twig
@@ -86,6 +86,13 @@
'text',
{'value': user.contact.mobile, 'max_length': 40}
) }}
+ {% if config('enable_mobile_show') %}
+ {{ f.checkbox(
+ 'mobile_show',
+ __('settings.profile.mobile_show'),
+ user.settings.mobile_show
+ ) }}
+ {% endif %}
{{ f.input(
'email',
__('settings.profile.email'),
diff --git a/src/Controllers/SettingsController.php b/src/Controllers/SettingsController.php
index 178d83ce..3af8529a 100644
--- a/src/Controllers/SettingsController.php
+++ b/src/Controllers/SettingsController.php
@@ -85,6 +85,7 @@ class SettingsController extends BaseController
'planned_departure_date' => 'optional|date:Y-m-d',
'dect' => 'optional|length:0:40', // dect/mobile can be purely numbers. "max" would have
'mobile' => 'optional|length:0:40', // checked their values, not their character length.
+ 'mobile_show' => 'optional|checked',
'email' => 'required|email|max:254',
'email_shiftinfo' => 'optional|checked',
'email_news' => 'optional|checked',
@@ -120,6 +121,11 @@ class SettingsController extends BaseController
}
$user->contact->mobile = $data['mobile'];
+
+ if (config('enable_mobile_show')) {
+ $user->settings->mobile_show = $data['mobile_show'] ?: false;
+ }
+
$user->email = $data['email'];
$user->settings->email_shiftinfo = $data['email_shiftinfo'] ?: false;
$user->settings->email_news = $data['email_news'] ?: false;
diff --git a/tests/Unit/Controllers/SettingsControllerTest.php b/tests/Unit/Controllers/SettingsControllerTest.php
index 87735228..8df1e8a7 100644
--- a/tests/Unit/Controllers/SettingsControllerTest.php
+++ b/tests/Unit/Controllers/SettingsControllerTest.php
@@ -61,6 +61,7 @@ class SettingsControllerTest extends TestCase
'planned_departure_date' => '2022-01-02',
'dect' => '1234',
'mobile' => '0123456789',
+ 'mobile_show' => true,
'email' => 'a@bc.de',
'email_shiftinfo' => true,
'email_news' => true,
@@ -82,6 +83,7 @@ class SettingsControllerTest extends TestCase
'enable_user_name' => true,
'enable_planned_arrival' => true,
'enable_dect' => true,
+ 'enable_mobile_show' => true,
'enable_goody' => true,
]);
@@ -134,6 +136,7 @@ class SettingsControllerTest extends TestCase
);
$this->assertEquals($body['dect'], $this->user->contact->dect);
$this->assertEquals($body['mobile'], $this->user->contact->mobile);
+ $this->assertEquals($body['mobile_show'], $this->user->settings->mobile_show);
$this->assertEquals($body['email'], $this->user->email);
$this->assertEquals($body['email_shiftinfo'], $this->user->settings->email_shiftinfo);
$this->assertEquals($body['email_news'], $this->user->settings->email_news);
@@ -188,6 +191,17 @@ class SettingsControllerTest extends TestCase
$this->assertEquals('', $this->user->contact->dect);
}
+ /**
+ * @covers \Engelsystem\Controllers\SettingsController::saveProfile
+ */
+ public function testSaveProfileIgnoresMobileShowIfDisabled()
+ {
+ $this->setUpProfileTest();
+ config(['enable_mobile_show' => false]);
+ $this->controller->saveProfile($this->request);
+ $this->assertFalse($this->user->settings->mobile_show);
+ }
+
/**
* @covers \Engelsystem\Controllers\SettingsController::saveProfile
*/
@@ -646,7 +660,12 @@ class SettingsControllerTest extends TestCase
$this->app->instance(Authenticator::class, $this->auth);
$this->user = User::factory()
- ->has(Settings::factory(['theme' => 1, 'language' => 'en_US', 'email_goody' => false]))
+ ->has(Settings::factory([
+ 'theme' => 1,
+ 'language' => 'en_US',
+ 'email_goody' => false,
+ 'mobile_show' => false,
+ ]))
->create();
$this->controller = $this->app->make(SettingsController::class);