Skip to content

Commit f75704f

Browse files
committed
Allow users to save a new label profiles directly from the label generator dialog
This fixes issue #806
1 parent 9d09543 commit f75704f

File tree

4 files changed

+76
-1
lines changed

4 files changed

+76
-1
lines changed

src/Controller/LabelController.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,31 @@ public function generator(Request $request, ?LabelProfile $profile = null): Resp
108108
$pdf_data = null;
109109
$filename = 'invalid.pdf';
110110

111-
//Generate PDF either when the form is submitted and valid, or the form was not submit yet, and generate is set
112111
if (($form->isSubmitted() && $form->isValid()) || ($generate && !$form->isSubmitted() && $profile instanceof LabelProfile)) {
112+
113+
//Check if the label should be saved as profile
114+
if ($form->get('save_profile')->isClicked() && $this->isGranted('@labels.create_profiles')) {
115+
//Retrieve the profile name from the form
116+
$new_name = $form->get('save_profile_name')->getData();
117+
//ensure that the name is not empty
118+
if ($new_name === '' || $new_name === null) {
119+
$form->get('save_profile_name')->addError(new FormError($this->translator->trans('label_generator.profile_name_empty')));
120+
goto render;
121+
}
122+
123+
$profile = new LabelProfile();
124+
$profile->setName($form->get('save_profile_name')->getData());
125+
$profile->setOptions($form_options);
126+
$this->em->persist($profile);
127+
$this->em->flush();
128+
$this->addFlash('success', 'label_generator.profile_saved');
129+
130+
return $this->redirectToRoute('label_dialog_profile', [
131+
'profile' => $profile->getID(),
132+
'target_id' => (string) $form->get('target_id')->getData()
133+
]);
134+
}
135+
113136
$target_id = (string) $form->get('target_id')->getData();
114137
$targets = $this->findObjects($form_options->getSupportedElement(), $target_id);
115138
if ($targets !== []) {
@@ -132,6 +155,7 @@ public function generator(Request $request, ?LabelProfile $profile = null): Resp
132155
}
133156
}
134157

158+
render:
135159
return $this->render('label_system/dialog.html.twig', [
136160
'form' => $form,
137161
'pdf_data' => $pdf_data,

src/Form/LabelSystem/LabelDialogType.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,22 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
7171
'label' => false,
7272
'disabled' => !$this->security->isGranted('@labels.edit_options') || $options['disable_options'],
7373
]);
74+
75+
$builder->add('save_profile_name', TextType::class, [
76+
'required' => false,
77+
'attr' =>[
78+
'placeholder' => 'label_generator.save_profile_name',
79+
]
80+
]);
81+
82+
$builder->add('save_profile', SubmitType::class, [
83+
'label' => 'label_generator.save_profile',
84+
'disabled' => !$this->security->isGranted('@labels.create_profiles'),
85+
'attr' => [
86+
'class' => 'btn btn-outline-success'
87+
]
88+
]);
89+
7490
$builder->add('update', SubmitType::class, [
7591
'label' => 'label_generator.update',
7692
]);

templates/label_system/dialog.html.twig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,17 @@
9999
</div>
100100
</div>
101101
{% endif %}
102+
103+
<div class="form-group row">
104+
<div class="offset-sm-3 col-sm-9">
105+
<div class="input-group">
106+
{{ form_widget(form.save_profile_name) }}
107+
{{ form_widget(form.save_profile) }}
108+
</div>
109+
{{ form_errors(form.save_profile_name) }}
110+
</div>
111+
</div>
112+
102113
</div>
103114
</div>
104115

translations/messages.en.xlf

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12299,5 +12299,29 @@ Please note, that you can not impersonate a disabled user. If you try you will g
1229912299
<target>Edit profiles</target>
1230012300
</segment>
1230112301
</unit>
12302+
<unit id="JzfeFN6" name="label_generator.profile_name_empty">
12303+
<segment>
12304+
<source>label_generator.profile_name_empty</source>
12305+
<target>Profile name must not be empty!</target>
12306+
</segment>
12307+
</unit>
12308+
<unit id="0TP6The" name="label_generator.save_profile_name">
12309+
<segment>
12310+
<source>label_generator.save_profile_name</source>
12311+
<target>Profile name</target>
12312+
</segment>
12313+
</unit>
12314+
<unit id="OhUW6es" name="label_generator.save_profile">
12315+
<segment>
12316+
<source>label_generator.save_profile</source>
12317+
<target>Save as new profile</target>
12318+
</segment>
12319+
</unit>
12320+
<unit id="sqc4h7S" name="label_generator.profile_saved">
12321+
<segment>
12322+
<source>label_generator.profile_saved</source>
12323+
<target>Profile saved!</target>
12324+
</segment>
12325+
</unit>
1230212326
</file>
1230312327
</xliff>

0 commit comments

Comments
 (0)