Skip to content

Commit

Permalink
Implement app.generate_name form toolbar action
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasnatter committed Aug 24, 2021
1 parent 7fdb4b6 commit 596fde8
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 2 deletions.
4 changes: 4 additions & 0 deletions assets/admin/app.js
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
// Add project specific javascript code here:
import {formToolbarActionRegistry} from 'sulu-admin-bundle/views';
import GenerateNameToolbarAction from "./formToolbarActions/GenerateNameToolbarAction";

formToolbarActionRegistry.add('app.generate_name', GenerateNameToolbarAction);
29 changes: 29 additions & 0 deletions assets/admin/formToolbarActions/GenerateNameToolbarAction.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import {translate} from 'sulu-admin-bundle/utils';
import {AbstractFormToolbarAction} from 'sulu-admin-bundle/views';

const FIRSTNAMES = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer', 'Michael', 'Linda']
const LASTNAMES = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Miller', 'Davis', 'Garcia']

export default class GenerateNameToolbarAction extends AbstractFormToolbarAction {
getToolbarItemConfig() {
const {allow_overwrite: allowOverwrite = false} = this.options;
const formData = this.resourceFormStore.data;
const nameAlreadySet = !!formData.firstName || !!formData.lastName;

return {
type: 'button',
label: translate('app.generate_name'),
icon: 'su-magic',
disabled: !allowOverwrite && nameAlreadySet,
onClick: this.handleClick,
};
}

handleClick = () => {
const randomFirstName = FIRSTNAMES[Math.floor(Math.random() * FIRSTNAMES.length)];
this.resourceFormStore.change('firstName', randomFirstName);

const randomLastName = LASTNAMES[Math.floor(Math.random() * LASTNAMES.length)];
this.resourceFormStore.change('lastName', randomLastName);
};
}
30 changes: 30 additions & 0 deletions src/Admin/AppAdmin.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace App\Admin;

use Sulu\Bundle\AdminBundle\Admin\Admin;
use Sulu\Bundle\AdminBundle\Admin\View\FormViewBuilderInterface;
use Sulu\Bundle\AdminBundle\Admin\View\ToolbarAction;
use Sulu\Bundle\AdminBundle\Admin\View\ViewCollection;
use Sulu\Bundle\ContactBundle\Admin\ContactAdmin;

class AppAdmin extends Admin
{
public function configureViews(ViewCollection $viewCollection): void
{
if ($viewCollection->has('sulu_contact.contact_add_form.details')) {
/** @var FormViewBuilderInterface $contactAddFormViewBuilder */
$contactAddFormViewBuilder = $viewCollection->get('sulu_contact.contact_add_form.details');
$contactAddFormViewBuilder->addToolbarActions([
new ToolbarAction('app.generate_name', ['allow_overwrite' => true]),
]);
}
}

public static function getPriority(): int
{
return ContactAdmin::getPriority() - 1;
}
}
3 changes: 2 additions & 1 deletion translations/admin.de.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@
"app.album_selection_label": "{count} {count, plural, =1 {Album} other {Alben}} ausgewählt",
"app.select_albums": "Alben auswählen",
"app.no_album_selected": "Kein Album ausgewählt",
"app.select_album": "Album auswählen"
"app.select_album": "Album auswählen",
"app.generate_name": "Namen ausgeben"
}
3 changes: 2 additions & 1 deletion translations/admin.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@
"app.album_selection_label": "{count} {count, plural, =1 {album} other {albums}} selected",
"app.select_albums": "Select albums",
"app.no_album_selected": "No album selected",
"app.select_album": "Select album"
"app.select_album": "Select album",
"app.generate_name": "Generate name"
}

0 comments on commit 596fde8

Please sign in to comment.