]> BookStack Code Mirror - bookstack/commitdiff
Fixes a number of issues with the image uploader. Read below,
authorAbijeet <redacted>
Sun, 18 Mar 2018 13:14:11 +0000 (18:44 +0530)
committerAbijeet <redacted>
Sun, 18 Mar 2018 13:14:11 +0000 (18:44 +0530)
- Added a remove link to remove files that have an error.
- Error will appear below the progress bar.
- Hovering on dz-image or dz-details will display the error message. Otherwise error message was covering the remove link as well.
- Removed styling around the file size.
- Removed gradient effect in accordance with BookStack styling.
- Dropzone filenae will not overflow the container element. Also done for page attachments
- Added a 'uploaded' error message. this error was being thrown when the file size exceeded the server configured file size. (https://stackoverflow.com/a/42934387/903324)

Towards #741

Signed-off-by: Abijeet <redacted>
resources/assets/js/vues/components/dropzone.js
resources/assets/sass/_components.scss
resources/assets/sass/_pages.scss
resources/lang/en/components.php
resources/lang/en/errors.php
resources/lang/en/validation.php

index 0f31bd5793363d4009b77d0fb1e5164671aa4e7d..e0a6d8b9d138fc5b3f8fe2d6741a6b44575c0119 100644 (file)
@@ -13,6 +13,8 @@ function mounted() {
    let container = this.$el;
    let _this = this;
    new DropZone(container, {
+       addRemoveLinks: true,
+       dictRemoveFile: trans('components.image_upload_remove'),
         url: function() {
             return _this.uploadUrl;
         },
@@ -41,7 +43,7 @@ function mounted() {
                     $(file.previewElement).find('[data-dz-errormessage]').text(message);
                 }
 
-                if (xhr.status === 413) setMessage(trans('errors.server_upload_limit'));
+                if (xhr && xhr.status === 413) setMessage(trans('errors.server_upload_limit'));
                 if (errorMessage.file) setMessage(errorMessage.file[0]);
             });
         }
@@ -57,4 +59,4 @@ module.exports = {
     props,
     mounted,
     data,
-};
\ No newline at end of file
+};
index 70cfaf2b494e032ce154385e6e05dc0de510eb28..30edd04515a5d489db5a1e4b9523bb38df260dcf 100644 (file)
@@ -207,6 +207,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
   margin-left: 1px;
   padding: $-m $-l;
   overflow-y: auto;
+  overflow-x: hidden;
   border-left: 1px solid #DDD;
   .dropzone-container {
     margin-top: $-m;
@@ -311,8 +312,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
 
 .dz-preview.dz-file-preview .dz-image {
   border-radius: 4px;
-  background: #999;
-  background: linear-gradient(to bottom, #eee, #ddd);
+  background: #e9e9e9;
 }
 
 .dz-preview.dz-file-preview .dz-details {
@@ -328,11 +328,12 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
 }
 
 .dz-preview .dz-remove {
-  font-size: 14px;
+  font-size: 13px;
   text-align: center;
   display: block;
   cursor: pointer;
   border: none;
+  margin-top: 3px;
 }
 
 .dz-preview .dz-remove:hover {
@@ -381,7 +382,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
   border: 1px solid transparent;
 }
 
-.dz-preview .dz-details .dz-filename span, .dz-preview .dz-details .dz-size span {
+.dz-preview .dz-details .dz-filename span {
   background-color: rgba(255, 255, 255, 0.4);
   padding: 0 0.4em;
   border-radius: 3px;
@@ -417,13 +418,13 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
 .dz-preview .dz-success-mark, .dz-preview .dz-error-mark {
   pointer-events: none;
   opacity: 0;
-  z-index: 500;
+  z-index: 1001;
   position: absolute;
   display: block;
   top: 50%;
   left: 50%;
   margin-left: -27px;
-  margin-top: -27px;
+  margin-top: -35px;
 }
 
 .dz-preview .dz-success-mark svg, .dz-preview .dz-error-mark svg {
@@ -478,9 +479,13 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
   display: block;
 }
 
-.dz-preview.dz-error:hover .dz-error-message {
-  opacity: 1;
-  pointer-events: auto;
+.dz-preview.dz-error {
+       .dz-image, .dz-details {
+               &:hover ~ .dz-error-message {
+                       opacity: 1;
+                       pointer-events: auto;
+               }
+       }
 }
 
 .dz-preview .dz-error-message {
@@ -492,7 +497,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
   opacity: 0;
   transition: opacity 0.3s ease;
   border-radius: 4px;
-  font-size: 11.5px;
+  font-size: 12px;
   line-height: 1.2;
   top: 88px;
   left: -26px;
@@ -593,4 +598,4 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
   .text-muted {
     color: #999;
   }
-}
\ No newline at end of file
+}
index 8eb3d292384414d36546b4c545a9a88e057f0274..cb1cae19fb108a7a81ef78eb31827058e5a555c3 100755 (executable)
     flex: 1;
     padding-top: 0;
   }
+  div[toolbox-tab-content] .padded.files {
+       overflow-x: hidden;
+  }
   h4 {
     font-size: 24px;
     margin: $-m 0 0 0;
index 334502d05b84dc0e09ec37b863d02d49d1d88e56..2266fe2b233890fcc5b2539166bdae3ee6d98449 100644 (file)
@@ -21,6 +21,7 @@ return [
     'image_upload_success' => 'Image uploaded successfully',
     'image_update_success' => 'Image details successfully updated',
     'image_delete_success' => 'Image successfully deleted',
+    'image_upload_remove' => 'Remove',
 
     /**
      * Code editor
@@ -29,4 +30,4 @@ return [
     'code_language' => 'Code Language',
     'code_content' => 'Code Content',
     'code_save' => 'Save Code',
-];
\ No newline at end of file
+];
index 3b1d6e8b3f22cfb1b2d10ad9b4207acfeaeb74e3..a86a1cdfc8dadab7d88c704992a7f84e67e45619 100644 (file)
@@ -35,6 +35,7 @@ return [
     'cannot_get_image_from_url' => 'Cannot get image from :url',
     'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
     'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+    'uploaded'  => 'The server does not allow uploads of this size. Please try a smaller file size.',
     'image_upload_error' => 'An error occurred uploading the image',
     'image_upload_type_error' => 'The image type being uploaded is invalid',
 
@@ -78,4 +79,4 @@ return [
     'error_occurred' => 'An Error Occurred',
     'app_down' => ':appName is down right now',
     'back_soon' => 'It will be back up soon.',
-];
\ No newline at end of file
+];
index 7c06264ab12db2da65cab67c44fd1043e9aff4cb..b75af7485ffb7baf86a2faaf46f6ab4107956a3d 100644 (file)
@@ -37,7 +37,7 @@ return [
     'email'                => 'The :attribute must be a valid email address.',
     'filled'               => 'The :attribute field is required.',
     'exists'               => 'The selected :attribute is invalid.',
-    'image'              => 'The :attribute must be an image.',
+    'image'                => 'The :attribute must be an image.',
     'in'                   => 'The selected :attribute is invalid.',
     'integer'              => 'The :attribute must be an integer.',
     'ip'                   => 'The :attribute must be a valid IP address.',