Skip to content

Commit 19ca9ec

Browse files
committed
React on server problems
1 parent 758b474 commit 19ca9ec

1 file changed

Lines changed: 67 additions & 17 deletions

File tree

js/cropper/cropper-ui.js

Lines changed: 67 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,11 @@ class CropperUI {
186186
selectImageTitle: 'Anderes Bild ändern',
187187
selectImageBody: 'Du hast die Änderungen am aktuellen Bild noch nicht gespeichert. Wenn Du auf "Weiter..." klickst, gehen diese Änderungen verloren. Möchtest Du das?',
188188
deleteImageTitle: 'Bild löschen',
189-
deleteImageBody: 'Wenn Du auf "Weiter..." klickst, wird das Bild unwiderruflich gelöscht. Möchtest Du das?',
189+
deleteImageBody: 'Wenn Du auf "Weiter..." klickst, wird das Bild unwiderruflich gelöscht. Möchtest Du das?',
190+
deleteFailedTitle:'Das Bild konnte nicht gelöscht werden.',
191+
deleteFailedText: 'Leider konnten wir das Bild nicht vom Server löschen. Bitte versuche es später noch einmal.',
192+
saveFailedTitle: 'Das Bild konnte nicht gespeichert werden.',
193+
saveFailedText: 'Leider konnten wir das Bild auf dem Server nicht speichern. Bitte versuche es später noch einmal.',
190194
},
191195
'en' : {
192196
addImageTitle: 'Adding a new image',
@@ -195,6 +199,10 @@ class CropperUI {
195199
selectImageBody: 'You haven\'t saved the changes to the current image yet. You will lose all these changes when you click on "Continue...". Are you sure?',
196200
deleteImageTitle: 'Deleting image',
197201
deleteImageBody: 'This image will be deleted when you click on "Continue...". This action cannot be undone. Are you sure?',
202+
deleteFailedTitle:'The image could not be deleted.',
203+
deleteFailedText: 'We are sorry but we couldn\'t delete the image from our server. Please retry later!',
204+
saveFailedTitle: 'The image could not be saved.',
205+
saveFailedText: 'We are sorry but we couldn\'t save the image on our server. Please retry later!',
198206
},
199207
}));
200208
}
@@ -557,23 +565,13 @@ class DeleteImageModal extends ChangeConfirmModal {
557565
action: 'delete',
558566
imageId: options.originalImageId,
559567
}
560-
webApp.POST(document.location, data, new WebAppAjaxController());
561-
}
562-
563-
cropperUI.destroy(this.domElement);
564-
// Remove from navigation
565-
var nav = cropperUI.getNav(this.domElement);
566-
if (nav) {
567-
var link = nav.find('a[data-imgid="'+options.originalImageId+'"]');
568-
// select next if any
569-
var nextImage = link.next();
570-
link.remove();
571-
if (nextImage.data('imgid') == 'newImg') nextImage = nextImage.prev();
572-
if ((nextImage.length == 0) || (nextImage.data('imgid') == 'newImg')) nextImage = null;
573-
if (nextImage != null) cropperUI.selectImage(nextImage[0]);
574-
nav.find('a[data-imgid="newImg"]').show();
568+
webApp.POST(document.location, data, new DeleteImageAjaxController(this.domElement));
569+
} else {
570+
var handler = new DeleteImageAjaxController(this.domElement);
571+
handler.deleteImage();
575572
}
576573
}
574+
577575
}
578576

579577
class SaveImageAjaxController extends WebAppDefaultAjaxController {
@@ -584,13 +582,65 @@ class SaveImageAjaxController extends WebAppDefaultAjaxController {
584582
}
585583

586584
done(ajaxParams, data, textStatus, jqXHR) {
587-
// Change nav and editor URL (replace/reset?), set changed to FALSE
588585
super.done(ajaxParams, data, textStatus, jqXHR);
586+
if (data.success) {
587+
// Change nav and editor URL (replace/reset?), set changed to FALSE
588+
} else {
589+
this.showError();
590+
}
589591
}
590592

591593
fail(ajaxParams, jqXHR, textStatus, errorThrown) {
592594
super.fail(ajaxParams, jqXHR, textStatus, errorThrown);
595+
this.showError();
596+
}
597+
598+
showError() {
599+
// Show error message
600+
webApp.error(webApp.i18n('saveFailedTitle'), webApp.i18n('saveFailedText'));
601+
}
602+
}
603+
604+
class DeleteImageAjaxController extends WebAppDefaultAjaxController {
605+
606+
constructor(domElement) {
607+
super();
608+
this.domElement = domElement;
609+
}
610+
611+
done(ajaxParams, data, textStatus, jqXHR) {
612+
super.done(ajaxParams, data, textStatus, jqXHR);
613+
if (data.success) {
614+
this.deleteImage();
615+
} else {
616+
this.showError();
617+
}
618+
}
619+
620+
fail(ajaxParams, jqXHR, textStatus, errorThrown) {
621+
super.fail(ajaxParams, jqXHR, textStatus, errorThrown);
622+
this.showError();
623+
}
624+
625+
deleteImage() {
626+
cropperUI.destroy(this.domElement);
627+
// Remove from navigation
628+
var nav = cropperUI.getNav(this.domElement);
629+
if (nav) {
630+
var link = nav.find('a[data-imgid="'+options.originalImageId+'"]');
631+
// select next if any
632+
var nextImage = link.next();
633+
link.remove();
634+
if (nextImage.data('imgid') == 'newImg') nextImage = nextImage.prev();
635+
if ((nextImage.length == 0) || (nextImage.data('imgid') == 'newImg')) nextImage = null;
636+
if (nextImage != null) cropperUI.selectImage(nextImage[0]);
637+
nav.find('a[data-imgid="newImg"]').show();
638+
}
639+
}
640+
641+
showError() {
593642
// Show error message
643+
webApp.error(webApp.i18n('deleteFailedTitle'), webApp.i18n('deleteFailedText'));
594644
}
595645
}
596646

0 commit comments

Comments
 (0)