Merge pull request #16652 from akemidx/feature/sc-28820

Username dropdown to show Usernames and not Emails as Examples
This commit is contained in:
snipe 2025-04-08 06:32:19 +01:00 committed by GitHub
commit 2275186222
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 128 additions and 2 deletions

View file

@ -394,6 +394,19 @@ return [
'due_checkin_days_help' => 'How many days before the expected checkin of an asset should it be listed in the "Due for checkin" page?',
'no_groups' => 'No groups have been created yet. Visit <code>Admin Settings > Permission Groups</code> to add one.',
'text' => 'Text',
'firstname_lastname_format' => 'First Name Last Name (jane.smith)',
'first_name_format' => 'First Name (jane)',
'filastname_format' => 'First Initial Last Name (jsmith)',
'lastnamefirstinitial_format' => 'Last Name First Initial (smithj)',
'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith)',
'lastname_firstinitial' => 'Last Name First Initial (smith_j)',
'lastname_dot_firstinitial_format' => 'Last Name First Initial (smith.j)',
'firstnamelastname' => 'First Name Last Name (janesmith)',
'firstnamelastinitial' => 'First Name Last Initial (janes)',
'lastnamefirstname' => 'Last Name.First Name (smith.jane)',
'logo_labels' => [
'acceptance_pdf_logo' => 'PDF Logo',

View file

@ -189,7 +189,7 @@ Form::macro('barcode_types', function ($name = 'barcode_type', $selected = null,
return $select;
});
Form::macro('username_format', function ($name = 'username_format', $selected = null, $class = null) {
Form::macro('email_format', function ($name = 'email_format', $selected = null, $class = null) {
$formats = [
'firstname.lastname' => trans('general.firstname_lastname_format'),
'firstname' => trans('general.first_name_format'),
@ -214,6 +214,31 @@ Form::macro('username_format', function ($name = 'username_format', $selected =
return $select;
});
Form::macro('username_format', function ($name = 'username_format', $selected = null, $class = null) {
$formats = [
'firstname.lastname' => trans('admin/settings/general.firstname_lastname_format'),
'firstname' => trans('admin/settings/general.first_name_format'),
'filastname' => trans('admin/settings/general.filastname_format'),
'lastnamefirstinitial' => trans('admin/settings/general.lastnamefirstinitial_format'),
'firstname_lastname' => trans('admin/settings/general.firstname_lastname_underscore_format'),
'firstinitial.lastname' => trans('admin/settings/general.firstinitial.lastname'),
'lastname_firstinitial' => trans('admin/settings/general.lastname_firstinitial'),
'lastname.firstinitial' => trans('admin/settings/general.lastname_dot_firstinitial_format'),
'firstnamelastname' => trans('admin/settings/general.firstnamelastname'),
'firstnamelastinitial' => trans('admin/settings/general.firstnamelastinitial'),
'lastname.firstname' => trans('admin/settings/general.lastnamefirstname'),
];
$select = '<select name="'.$name.'" class="'.$class.'" style="width: 100%" aria-label="'.$name.'">';
foreach ($formats as $format => $label) {
$select .= '<option value="'.$format.'"'.($selected == $format ? ' selected="selected" role="option" aria-selected="true"' : ' aria-selected="false"').'>'.$label.'</option> '."\n";
}
$select .= '</select>';
return $select;
});
Form::macro('two_factor_options', function ($name = 'two_factor_enabled', $selected = null, $class = null) {
$formats = [
'' => trans('admin/settings/general.two_factor_disabled'),

View file

@ -93,7 +93,7 @@
<label for="email_format">{{ trans('general.email_format') }}</label>
</div>
<div class="col-md-9">
{!! Form::username_format('email_format', old('email_format', $setting->email_format), 'select2') !!}
{!! Form::email_format('email_format', old('email_format', $setting->email_format), 'select2') !!}
{!! $errors->first('email_format', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>

View file

@ -24,6 +24,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstNameEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'natalia@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstname');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testFirstNameDotLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -32,6 +40,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstNameDotLastNameEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'natalia.allanovna-romanova-oshostakova@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstname.lastname');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testLastNameFirstInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -40,6 +56,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testLastNameFirstInitialEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'allanovna-romanova-oshostakovan@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'lastnamefirstinitial');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testFirstInitialLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -48,6 +72,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstInitialLastNameEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'nallanovna-romanova-oshostakova@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'filastname');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testFirstInitialUnderscoreLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -56,6 +88,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstInitialUnderscoreLastNameEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'nallanovna-romanova-oshostakova@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstinitial_lastname');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testSingleName()
{
$fullname = 'Natalia';
@ -64,6 +104,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testSingleNameEmail()
{
$fullname = 'Natalia';
$expected_email = 'natalia@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstname_lastname',);
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testFirstInitialDotLastname()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -72,6 +120,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstInitialDotLastnameEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'nallanovna-romanova-oshostakova@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstinitial.lastname');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testLastNameDotFirstInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -80,6 +136,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testLastNameDotFirstInitialEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'allanovna-romanova-oshostakova.n@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'lastname.firstinitial');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testLastNameUnderscoreFirstInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -88,6 +152,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testLastNameUnderscoreFirstInitialEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'allanovna-romanova-oshostakova_n@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'lastname_firstinitial');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testFirstNameLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -96,6 +168,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstNameLastNameEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'nataliaallanovna-romanova-oshostakova@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstnamelastname');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
public function testFirstNameLastInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@ -103,4 +183,12 @@ class UserTest extends TestCase
$user = User::generateFormattedNameFromFullName($fullname, 'firstnamelastinitial');
$this->assertEquals($expected_username, $user['username']);
}
public function testFirstNameLastInitialEmail()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
$expected_email = 'nataliaa@example.com';
$user = User::generateFormattedNameFromFullName($fullname, 'firstnamelastinitial');
$this->assertEquals($expected_email, $user['username'] . '@example.com');
}
}