Skip to content

Commit 106390a

Browse files
committed
Implement app.generate_name form toolbar action
1 parent 28f00bb commit 106390a

File tree

5 files changed

+67
-2
lines changed

5 files changed

+67
-2
lines changed

assets/admin/app.js

+4
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
// Add project specific javascript code and import of additional bundles here:
2+
import {formToolbarActionRegistry} from 'sulu-admin-bundle/views';
3+
import GenerateNameToolbarAction from "./formToolbarActions/GenerateNameToolbarAction";
4+
5+
formToolbarActionRegistry.add('app.generate_name', GenerateNameToolbarAction);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {translate} from 'sulu-admin-bundle/utils';
2+
import {AbstractFormToolbarAction} from 'sulu-admin-bundle/views';
3+
4+
const FIRSTNAMES = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer', 'Michael', 'Linda']
5+
const LASTNAMES = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Miller', 'Davis', 'Garcia']
6+
7+
export default class GenerateNameToolbarAction extends AbstractFormToolbarAction {
8+
getToolbarItemConfig() {
9+
const {allow_overwrite: allowOverwrite = false} = this.options;
10+
const formData = this.resourceFormStore.data;
11+
const nameAlreadySet = !!formData.firstName || !!formData.lastName;
12+
13+
return {
14+
type: 'button',
15+
label: translate('app.generate_name'),
16+
icon: 'su-magic',
17+
disabled: !allowOverwrite && nameAlreadySet,
18+
onClick: this.handleClick,
19+
};
20+
}
21+
22+
handleClick = () => {
23+
const randomFirstName = FIRSTNAMES[Math.floor(Math.random() * FIRSTNAMES.length)];
24+
this.resourceFormStore.change('firstName', randomFirstName);
25+
26+
const randomLastName = LASTNAMES[Math.floor(Math.random() * LASTNAMES.length)];
27+
this.resourceFormStore.change('lastName', randomLastName);
28+
};
29+
}

src/Admin/AppAdmin.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Admin;
6+
7+
use Sulu\Bundle\AdminBundle\Admin\Admin;
8+
use Sulu\Bundle\AdminBundle\Admin\View\FormViewBuilderInterface;
9+
use Sulu\Bundle\AdminBundle\Admin\View\ToolbarAction;
10+
use Sulu\Bundle\AdminBundle\Admin\View\ViewCollection;
11+
use Sulu\Bundle\ContactBundle\Admin\ContactAdmin;
12+
13+
class AppAdmin extends Admin
14+
{
15+
public function configureViews(ViewCollection $viewCollection): void
16+
{
17+
if ($viewCollection->has('sulu_contact.contact_add_form.details')) {
18+
/** @var FormViewBuilderInterface $contactAddFormViewBuilder */
19+
$contactAddFormViewBuilder = $viewCollection->get('sulu_contact.contact_add_form.details');
20+
$contactAddFormViewBuilder->addToolbarActions([
21+
new ToolbarAction('app.generate_name', ['allow_overwrite' => true]),
22+
]);
23+
}
24+
}
25+
26+
public static function getPriority(): int
27+
{
28+
return ContactAdmin::getPriority() - 1;
29+
}
30+
}

translations/admin.de.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"app.album_selection_label": "{count} {count, plural, =1 {Album} other {Alben}} ausgewählt",
1111
"app.select_albums": "Alben auswählen",
1212
"app.no_album_selected": "Kein Album ausgewählt",
13-
"app.select_album": "Album auswählen"
13+
"app.select_album": "Album auswählen",
14+
"app.generate_name": "Namen ausgeben"
1415
}

translations/admin.en.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"app.album_selection_label": "{count} {count, plural, =1 {album} other {albums}} selected",
1111
"app.select_albums": "Select albums",
1212
"app.no_album_selected": "No album selected",
13-
"app.select_album": "Select album"
13+
"app.select_album": "Select album",
14+
"app.generate_name": "Generate name"
1415
}

0 commit comments

Comments
 (0)