Skip to content

Commit 6654f2e

Browse files
committed
Improve error handling
1 parent 1e2524b commit 6654f2e

File tree

6 files changed

+66
-25
lines changed

6 files changed

+66
-25
lines changed

CHANGELOG-1.x.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
1.4.0
2+
-----
3+
4+
* File uploads: improve message when the request may be truncated
5+
* Error events: add response parameter to JS function call
6+
* Error events: allow to call different JS functions for each event
7+
18
1.3.2
29
-----
310

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,13 +364,27 @@ import 'froala-editor/css/plugins.pkgd.min.css';
364364
365365
window.FroalaEditor = FroalaEditor;
366366
367-
function froalaDisplayError(p_editor, error ) {
367+
/**
368+
* @param editor Editor instance
369+
* @param error Error object generated by Froala
370+
* @param response Response object coming from the server
371+
*/
372+
function froalaDisplayError(editor, error, response) {
368373
alert(`Error ${error.code}: ${error.message}`);
369374
}
370375

371376
window.froalaDisplayError = froalaDisplayError;
372377
```
373378

379+
Instead of defining a generic `froalaDisplayError` function, you can also define one per error event, using these
380+
function names:
381+
382+
* `froalaImageErrorEventHandler`
383+
* `froalaImageManagerErrorEventHandler`
384+
* `froalaSaveErrorEventHandler`
385+
* `froalaFileErrorEventHandler`
386+
* `froalaVideoErrorEventHandler`
387+
374388
Now you can disable Froala bundle CSS/JS inclusion:
375389

376390
```yaml

src/Controller/MediaController.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ public function __construct(private MediaManager $mediaManager, private KernelIn
1818

1919
public function uploadImage(Request $request): JsonResponse
2020
{
21-
$path = $request->request->get('path');
22-
$folder = $request->request->get('folder');
21+
$path = $request->request->get('path', '');
22+
$folder = $request->request->get('folder', '');
2323
$rootDir = $this->kernel->getProjectDir();
24-
$publicDir = $request->request->get('public_dir');
24+
$publicDir = $request->request->get('public_dir', '');
2525
$basePath = $request->getBasePath();
2626

2727
return $this->mediaManager->uploadImage($request->files, $rootDir, $publicDir, $basePath, $folder, $path);
@@ -52,21 +52,21 @@ public function loadImages(Request $request): JsonResponse
5252

5353
public function uploadFile(Request $request): JsonResponse
5454
{
55-
$path = $request->request->get('path');
56-
$folder = $request->request->get('folder');
55+
$path = $request->request->get('path', '');
56+
$folder = $request->request->get('folder', '');
5757
$rootDir = $this->kernel->getProjectDir();
58-
$publicDir = $request->request->get('public_dir');
58+
$publicDir = $request->request->get('public_dir', '');
5959
$basePath = $request->getBasePath();
6060

6161
return $this->mediaManager->uploadFile($request->files, $rootDir, $publicDir, $basePath, $folder, $path);
6262
}
6363

6464
public function uploadVideo(Request $request): JsonResponse
6565
{
66-
$path = $request->request->get('path');
67-
$folder = $request->request->get('folder');
66+
$path = $request->request->get('path', '');
67+
$folder = $request->request->get('folder', '');
6868
$rootDir = $this->kernel->getProjectDir();
69-
$publicDir = $request->request->get('public_dir');
69+
$publicDir = $request->request->get('public_dir', '');
7070
$basePath = $request->getBasePath();
7171

7272
return $this->mediaManager->uploadVideo($request->files, $rootDir, $publicDir, $basePath, $folder, $path);

src/Resources/public/misc.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/**
2-
* Display errors.
3-
* @param p_editor is the editor.
4-
* @param error is the error object.
2+
* @param editor Editor instance
3+
* @param error Error object generated by Froala
4+
* @param response Response object coming from the server
55
*/
6-
function froalaDisplayError(p_editor, error ) {
6+
function froalaDisplayError(editor, error, response) {
77
alert(`Error ${error.code}: ${error.message}`);
88
}

src/Resources/views/Form/froala_widget.html.twig

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,40 @@
6666
{% endfor %}
6767
6868
events: {
69-
'image.error': function ( error ) {
70-
froalaDisplayError( this, error );
69+
'image.error': function (error, response) {
70+
if (typeof froalaImageErrorEventHandler === 'function') {
71+
froalaImageErrorEventHandler(this, error, response);
72+
} else {
73+
froalaDisplayError(this, error, response);
74+
}
7175
},
72-
'imageManager.error': function ( error ) {
73-
froalaDisplayError( this, error );
76+
'imageManager.error': function (error, response) {
77+
if (typeof froalaImageManagerErrorEventHandler === 'function') {
78+
froalaImageManagerErrorEventHandler(this, error, response);
79+
} else {
80+
froalaDisplayError(this, error, response);
81+
}
7482
},
75-
'save.error': function ( error ) {
76-
froalaDisplayError( this, error );
83+
'save.error': function (error, response) {
84+
if (typeof froalaSaveErrorEventHandler === 'function') {
85+
froalaSaveErrorEventHandler(this, error, response);
86+
} else {
87+
froalaDisplayError(this, error, response);
88+
}
7789
},
78-
'file.error': function ( error, responses ) {
79-
froalaDisplayError( this, error );
90+
'file.error': function (error, response) {
91+
if (typeof froalaFileErrorEventHandler === 'function') {
92+
froalaFileErrorEventHandler(this, error, response);
93+
} else {
94+
froalaDisplayError(this, error, response);
95+
}
8096
},
81-
'video.error': function ( error, responses ) {
82-
froalaDisplayError( this, error );
97+
'video.error': function (error, response) {
98+
if (typeof froalaVideoErrorEventHandler === 'function') {
99+
froalaVideoErrorEventHandler(this, error, response);
100+
} else {
101+
froalaDisplayError(this, error, response);
102+
}
83103
}
84104
{% for event, func in froala_events %}
85105
,'{{ event }}': {{ func }}

src/Service/MediaManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private function handleFileUpload(FileBag $fileBag, string $rootDir, string $pub
8282
$file = $fileBag->get('file');
8383
if (null === $file) {
8484
$response->setData([
85-
'error' => 'No file received.',
85+
'error' => 'No file received. Maybe file size exceeded maximum file size allowed?',
8686
]);
8787
$response->setStatusCode(400);
8888

0 commit comments

Comments
 (0)