Skip to content

Commit d138885

Browse files
committed
Shows messages in GUI; Fixes puphpet#1511
1 parent 6c13fc2 commit d138885

File tree

7 files changed

+109
-32
lines changed

7 files changed

+109
-32
lines changed

src/Puphpet/MainBundle/Controller/FrontController.php

+45-11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Symfony\Component\HttpFoundation\RedirectResponse;
99
use Symfony\Component\HttpFoundation\Request;
1010
use Symfony\Component\HttpFoundation\Response;
11+
use Symfony\Component\HttpFoundation\Session\Session;
1112
use Symfony\Component\Yaml\Yaml;
1213

1314
class FrontController extends Controller
@@ -16,6 +17,9 @@ public function indexAction(Request $request)
1617
{
1718
$manager = $this->get('puphpet.extension.manager');
1819

20+
/** @var Session $session */
21+
$session = $this->get('session');
22+
1923
if ($request->isMethod('POST')) {
2024
$archive = $manager->createArchive($request->request->all());
2125

@@ -27,44 +31,74 @@ public function indexAction(Request $request)
2731
return $response;
2832
}
2933

34+
$messages = $session->getFlashBag()->all();
35+
3036
return $this->render('PuphpetMainBundle:front:template.html.twig', [
3137
'extensions' => $manager->getExtensions(),
38+
'messages' => $messages,
3239
]);
3340
}
3441

3542
public function uploadConfigAction(Request $request)
3643
{
3744
$config = $this->normalizeLineBreaks($request->get('config'));
3845

46+
/** @var Session $session */
47+
$session = $this->get('session');
48+
3949
try {
4050
$yaml = Yaml::parse($config);
41-
} catch (\Exception $e) {}
51+
} catch (\Exception $e) {
52+
$session->getFlashBag()->add('error', [
53+
'title' => 'There was a problem parsing your config file',
54+
'content' => $e->getMessage(),
55+
]);
56+
57+
$request->setMethod('GET');
58+
59+
return $this->indexAction($request);
60+
}
4261

4362
if (empty($yaml)) {
44-
$this->get('session')->getFlashBag()->add(
45-
'error',
46-
'The config file provided was empty! Please recreate your manifest manually below.'
47-
);
63+
$session->getFlashBag()->add('error', [
64+
'title' => 'The config file provided was empty',
65+
'content' => 'Check your config file, or manually recreate it in the GUI.',
66+
]);
4867

49-
return new RedirectResponse($this->generateUrl('puphpet.main.homepage'));
68+
$request->setMethod('GET');
69+
70+
return $this->indexAction($request);
5071
}
5172

5273
$manager = $this->get('puphpet.extension.manager');
5374
$manager->setCustomDataAll($yaml);
5475

5576
try {
77+
$session->getFlashBag()->add('success', [
78+
'title' => 'Success!',
79+
'content' => 'Your previously generated config file was successfully loaded!',
80+
]);
81+
5682
$rendered = $this->render('PuphpetMainBundle:front:template.html.twig', [
5783
'extensions' => $manager->getExtensions(),
84+
'messages' => $session->getFlashBag()->all(),
5885
]);
5986

6087
return $rendered;
6188
} catch (\Exception $e) {
62-
$this->get('session')->getFlashBag()->add(
63-
'error',
64-
'The config file provided had errors! Please recreate your manifest manually below.'
65-
);
89+
$session->getFlashBag()->clear();
90+
91+
$session->getFlashBag()->add('error', [
92+
'title' => 'There was a problem parsing your config file',
93+
'content' => sprintf(
94+
'<p> Please recreate your manifest manually below.</p>' .
95+
'<p>Error message:</p><p>%s</p>', $e->getMessage()
96+
)
97+
]);
98+
99+
$request->setMethod('GET');
66100

67-
return new RedirectResponse($this->generateUrl('puphpet.main.homepage'));
101+
return $this->indexAction($request);
68102
}
69103
}
70104

src/Puphpet/MainBundle/Resources/views/front/alerts.html.twig

-21
This file was deleted.

src/Puphpet/MainBundle/Resources/views/front/template.html.twig

+11
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<link rel="stylesheet" href="{{ asset('assets/v5/vendor/bootstrap-3.3.4/bootstrap-3.3.4.css') }}" />
1414
<link rel="stylesheet" href="{{ asset('assets/v5/vendor/selectize.js/selectize.bootstrap3.css') }}" />
1515
<link rel="stylesheet" href="{{ asset('assets/v5/vendor/webui-popover/jquery.webui-popover.css') }}" />
16+
<link rel="stylesheet" href="{{ asset('assets/v5/vendor/pnotify/pnotify.custom.min.css') }}" />
1617
<link rel="stylesheet" href="{{ asset('assets/v5/css/style.css') }}" />
1718
{% endblock %}
1819

@@ -28,6 +29,15 @@
2829
{% endblock head %}
2930

3031
<body>
32+
33+
{% for messageType, innerMessages in messages %}
34+
{% for messageIndex, message in innerMessages %}
35+
<div class="growl-alert" data-title="{{ message.title }}" data-type="{{ messageType }}">
36+
{{ message.content }}
37+
</div>
38+
{% endfor %}
39+
{% endfor %}
40+
3141
<section id="container">
3242

3343
{% block topMenu %}
@@ -130,6 +140,7 @@
130140
<script>hljs.initHighlightingOnLoad();</script>
131141
<script src="{{ asset('assets/v5/vendor/selectize.js/selectize.min.js') }}"></script>
132142
<script src="{{ asset('assets/v5/vendor/webui-popover/jquery.webui-popover.js') }}"></script>
143+
<script src="{{ asset('assets/v5/vendor/pnotify/pnotify.custom.min.js') }}"></script>
133144
<script src="{{ asset('assets/v5/js/custom.js') }}"></script>
134145
{% endblock footerJs %}
135146

web/assets/v5/css/style.css

+4
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,10 @@ legend {
721721
padding: 10px;
722722
}
723723

724+
.growl-alert {
725+
display: none;
726+
}
727+
724728
@media (min-width: 768px) {
725729
.modal-dialog {
726730
margin: 75px auto;

web/assets/v5/js/custom.js

+11
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,16 @@ PUPHPET.disableEnterSubmit = function() {
802802
});
803803
};
804804

805+
PUPHPET.bootstrapNotify = function() {
806+
$('.growl-alert').each(function() {
807+
new PNotify({
808+
title: this.getAttribute('data-title'),
809+
text: $(this).html(),
810+
type: this.getAttribute('data-type')
811+
});
812+
});
813+
};
814+
805815
$(document).ready(function() {
806816
PUPHPET.updateOtherInput();
807817
PUPHPET.updateOtherInputSelect();
@@ -820,6 +830,7 @@ $(document).ready(function() {
820830
PUPHPET.toggleDisplayOnSelect();
821831
PUPHPET.uploadConfig();
822832
PUPHPET.disableEnterSubmit();
833+
PUPHPET.bootstrapNotify();
823834
});
824835

825836
/**

web/assets/v5/vendor/pnotify/pnotify.custom.min.css

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)