Skip to content

Commit 45f2c10

Browse files
committed
[TASK] Make author fields optional
Due to data minimization, users should not be required to enter their email address or website to use the Site Package Builder. The vendor many ppl use is not the same as the company name. Also, not everyone works in a company (freelancers, universities, ...) and some customers or organizations want their own vendor no matter who created the site package. Make vendor its own field.
1 parent 124f6dd commit 45f2c10

File tree

7 files changed

+48
-36
lines changed

7 files changed

+48
-36
lines changed

src/Controller/SitePackageController.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public function new(Request $request): Response
5454
$form = $this->createNewSitePackageForm($sitepackage);
5555
$form->handleRequest($request);
5656
if ($form->isSubmitted() && $form->isValid()) {
57-
$sitepackage->setVendorName(StringUtility::stringToUpperCamelCase($sitepackage->getAuthor()->getCompany()));
57+
$sitepackage->setVendorName(StringUtility::stringToUpperCamelCase($sitepackage->getVendorName()));
5858
$sitepackage->setVendorNameAlternative(StringUtility::camelCaseToLowerCaseDashed($sitepackage->getVendorName()));
5959
$sitepackage->setPackageName(StringUtility::stringToUpperCamelCase($sitepackage->getTitle()));
6060
$sitepackage->setPackageNameAlternative(StringUtility::camelCaseToLowerCaseDashed($sitepackage->getPackageName()));
@@ -90,7 +90,6 @@ public function edit(Request $request): Response
9090
$form = $this->createEditSitePackageForm($sitepackage);
9191
$form->handleRequest($request);
9292
if ($form->isSubmitted() && $form->isValid()) {
93-
$sitepackage->setVendorName(StringUtility::stringToUpperCamelCase($sitepackage->getAuthor()->getCompany()));
9493
$sitepackage->setVendorNameAlternative(StringUtility::camelCaseToLowerCaseDashed($sitepackage->getVendorName()));
9594
$sitepackage->setPackageName(StringUtility::stringToUpperCamelCase($sitepackage->getTitle()));
9695
$sitepackage->setPackageNameAlternative(StringUtility::camelCaseToLowerCaseDashed($sitepackage->getPackageName()));

src/Entity/SitePackage.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,18 @@ class SitePackage implements \JsonSerializable
3636
#[Assert\NotBlank]
3737
private float $typo3Version = 13.4;
3838

39-
private string $vendorName;
40-
4139
private string $vendorNameAlternative;
4240

4341
#[Assert\NotBlank(message: 'Please enter a title for your site package')]
4442
#[Assert\Length(min: 3)]
4543
#[Assert\Regex(pattern: '/^[A-Za-z0-9\x7f-\xff .:&-]+$/', message: 'Only letters, numbers and spaces are allowed')]
4644
private string $title;
4745

46+
#[Assert\NotBlank(message: 'Please enter a vendor, CamelCase')]
47+
#[Assert\Length(min: 3)]
48+
#[Assert\Regex(pattern: '/^[A-Za-z0-9]+$/', message: 'Only letters and numbers are allowed')]
49+
private string $vendorName;
50+
4851
#[Assert\Regex(pattern: '/^[A-Za-z0-9\x7f-\xff .,:!?&-]+$/', message: 'Only letters, numbers and spaces are allowed')]
4952
private string $description;
5053

src/Entity/SitePackage/Author.php

+1-6
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,15 @@
3030
*/
3131
class Author implements \JsonSerializable
3232
{
33-
#[Assert\NotBlank(message: "Please enter the authors' name.")]
3433
#[Assert\Length(min: 3)]
3534
private string $name;
3635

37-
#[Assert\NotBlank(message: "Please enter the authors' email address.")]
3836
#[Assert\Email(message: "The email '{{ value }}' is not a valid email.")]
3937
private string $email;
4038

41-
#[Assert\NotBlank(message: "Please enter the authors' company.")]
42-
#[Assert\Length(min: 3)]
43-
#[Assert\Regex(pattern: '/^[A-Za-z0-9\x7f-\xff .:&-]+$/', message: 'Only letters, numbers and spaces are allowed')]
39+
#[Assert\Regex(pattern: '/^[\p{L}\p{N} .:&-]+$/u', message: 'Invalid characters in company name.')]
4440
private string $company;
4541

46-
#[Assert\NotBlank(message: "Please enter the authors' homepage URL.")]
4742
#[Assert\Url]
4843
private string $homepage;
4944

src/Form/AuthorType.php

+8
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public function buildForm(FormBuilderInterface $builder, array $options)
3636
{
3737
$builder
3838
->add('name', TextType::class, [
39+
'required' => false,
40+
'empty_data' => '',
3941
'attr' => [
4042
'autocomplete' => 'off',
4143
'placeholder' => 'John Doe',
@@ -45,6 +47,8 @@ public function buildForm(FormBuilderInterface $builder, array $options)
4547
],
4648
])
4749
->add('email', EmailType::class, [
50+
'required' => false,
51+
'empty_data' => '',
4852
'attr' => [
4953
'autocomplete' => 'off',
5054
'placeholder' => '[email protected]',
@@ -54,6 +58,8 @@ public function buildForm(FormBuilderInterface $builder, array $options)
5458
],
5559
])
5660
->add('company', TextType::class, [
61+
'required' => false,
62+
'empty_data' => '',
5763
'attr' => [
5864
'autocomplete' => 'off',
5965
'placeholder' => 'Company Inc.',
@@ -63,6 +69,8 @@ public function buildForm(FormBuilderInterface $builder, array $options)
6369
],
6470
])
6571
->add('homepage', TextType::class, [
72+
'required' => false,
73+
'empty_data' => '',
6674
'attr' => [
6775
'autocomplete' => 'off',
6876
'placeholder' => 'https://www.example.com',

src/Form/SitePackageType.php

+10-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,16 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
7878
'placeholder' => 'My Site Package',
7979
],
8080
'documentation' => [
81-
'example' => 'My SitePackage',
81+
'example' => 'My Site Package',
82+
],
83+
])
84+
->add('vendor_name', TextType::class, [
85+
'attr' => [
86+
'autocomplete' => 'off',
87+
'placeholder' => 'MyCompany',
88+
],
89+
'documentation' => [
90+
'example' => 'MyCompany',
8291
],
8392
])
8493
->add('description', TextareaType::class, [

templates/sitepackage/success.html.twig

+21-11
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,27 @@
105105
<dt class="col-sm-3">Composer</dt>
106106
<dd class="col-sm-9">{{ sitepackage.vendorNameAlternative }}/{{ sitepackage.packageNameAlternative }}</dd>
107107
</dl>
108-
<h3>Author</h3>
109-
<dl class="row">
110-
<dt class="col-sm-3">Name</dt>
111-
<dd class="col-sm-9">{{ sitepackage.author.name }}</dd>
112-
<dt class="col-sm-3">E-Mail</dt>
113-
<dd class="col-sm-9">{{ sitepackage.author.email }}</dd>
114-
<dt class="col-sm-3">Company</dt>
115-
<dd class="col-sm-9">{{ sitepackage.author.company }}</dd>
116-
<dt class="col-sm-3">Homepage</dt>
117-
<dd class="col-sm-9">{{ sitepackage.author.homepage }}</dd>
118-
</dl>
108+
{%- if sitepackage.author.name or sitepackage.author.email or sitepackage.author.company or sitepackage.author.homepage %}
109+
<h3>Author</h3>
110+
<dl class="row">
111+
{%- if sitepackage.author.name %}
112+
<dt class="col-sm-3">Name</dt>
113+
<dd class="col-sm-9">{{ sitepackage.author.name }}</dd>
114+
{%- endif %}
115+
{%- if sitepackage.author.email %}
116+
<dt class="col-sm-3">E-Mail</dt>
117+
<dd class="col-sm-9">{{ sitepackage.author.email }}</dd>
118+
{%- endif %}
119+
{%- if sitepackage.author.company %}
120+
<dt class="col-sm-3">Company</dt>
121+
<dd class="col-sm-9">{{ sitepackage.author.company }}</dd>
122+
{%- endif %}
123+
{%- if sitepackage.author.homepage %}
124+
<dt class="col-sm-3">Homepage</dt>
125+
<dd class="col-sm-9">{{ sitepackage.author.homepage }}</dd>
126+
{%- endif %}
127+
</dl>
128+
{%- endif %}
119129
<p>
120130
<a href="{{ path('sitepackage_new') }}" class="btn btn-light">
121131
<span class="btn-text">Restart</span>

tests/Functional/Controller/Api/SitePackageControllerTest.php

+2-14
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public function createSitePackage(): void
4545
'base_package' => 'bootstrap_package',
4646
'typo3_version' => 13.4,
4747
'title' => 'My Site Package',
48+
'vendor_name' => 'MyVendor',
4849
'description' => 'Project Configuration for Client',
4950
'repository_url' => 'https://github.com/FriendsOfTYPO3/introduction',
5051
'author' => [
@@ -85,26 +86,13 @@ public function validationMissingCheck(): void
8586
$responseContent = json_decode((string)$response->getContent(), true, 512, JSON_THROW_ON_ERROR);
8687
self::assertSame($responseContent, [
8788
'errors' => [
89+
'Please enter a vendor, CamelCase',
8890
'typo3_version' => [
8991
'The selected choice is invalid.',
9092
],
9193
'title' => [
9294
'Please enter a title for your site package',
9395
],
94-
'author' => [
95-
'name' => [
96-
'Please enter the authors\' name.',
97-
],
98-
'email' => [
99-
'Please enter the authors\' email address.',
100-
],
101-
'company' => [
102-
'Please enter the authors\' company.',
103-
],
104-
'homepage' => [
105-
'Please enter the authors\' homepage URL.',
106-
],
107-
],
10896
],
10997
]);
11098
}

0 commit comments

Comments
 (0)