diff --git a/app/Book.php b/app/Book.php
index 15fbbe5ff..3fb87b4c5 100644
--- a/app/Book.php
+++ b/app/Book.php
@@ -17,14 +17,14 @@ class Book extends Entity
}
return baseUrl('/books/' . urlencode($this->slug));
}
-
+
/**
* Returns book cover image, if book cover not exists return default cover image.
- * @param int $height - Height of the image
* @param int $width - Width of the image
+ * @param int $height - Height of the image
* @return string
*/
- public function getBookCover($height = 170, $width = 300)
+ public function getBookCover($width = 440, $height = 250)
{
$default = baseUrl('/book_default_cover.png');
if (!$this->image_id) return $default;
@@ -36,7 +36,7 @@ class Book extends Entity
}
return $cover;
}
-
+
/**
* Get the cover image of the book
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
diff --git a/resources/assets/js/components/image-picker.js b/resources/assets/js/components/image-picker.js
new file mode 100644
index 000000000..d8fd7cce1
--- /dev/null
+++ b/resources/assets/js/components/image-picker.js
@@ -0,0 +1,59 @@
+
+class ImagePicker {
+
+ constructor(elem) {
+ this.elem = elem;
+ this.imageElem = elem.querySelector('img');
+ this.input = elem.querySelector('input');
+
+ this.isUsingIds = elem.getAttribute('data-current-id') !== '';
+ this.isResizing = elem.getAttribute('data-resize-height') && elem.getAttribute('data-resize-width');
+ this.isResizeCropping = elem.getAttribute('data-resize-crop') !== '';
+
+ let selectButton = elem.querySelector('button[data-action="show-image-manager"]');
+ selectButton.addEventListener('click', this.selectImage.bind(this));
+
+ let resetButton = elem.querySelector('button[data-action="reset-image"]');
+ resetButton.addEventListener('click', this.reset.bind(this));
+
+ let removeButton = elem.querySelector('button[data-action="remove-image"]');
+ if (removeButton) {
+ removeButton.addEventListener('click', this.removeImage.bind(this));
+ }
+ }
+
+ selectImage() {
+ window.ImageManager.show(image => {
+ if (!this.isResizing) {
+ this.setImage(image);
+ return;
+ }
+
+ let requestString = '/images/thumb/' + image.id + '/' + this.elem.getAttribute('data-resize-width') + '/' + this.elem.getAttribute('data-resize-height') + '/' + (this.isResizeCropping ? 'true' : 'false');
+
+ window.$http.get(window.baseUrl(requestString)).then(resp => {
+ image.url = resp.data.url;
+ this.setImage(image);
+ });
+ });
+ }
+
+ reset() {
+ this.setImage({id: 0, url: this.elem.getAttribute('data-default-image')});
+ }
+
+ setImage(image) {
+ this.imageElem.src = image.url;
+ this.input.value = this.isUsingIds ? image.id : image.url;
+ this.imageElem.classList.remove('none');
+ }
+
+ removeImage() {
+ this.imageElem.src = this.elem.getAttribute('data-default-image');
+ this.imageElem.classList.add('none');
+ this.input.value = 'none';
+ }
+
+}
+
+module.exports = ImagePicker;
\ No newline at end of file
diff --git a/resources/assets/js/components/index.js b/resources/assets/js/components/index.js
index f37709101..4cb16d06a 100644
--- a/resources/assets/js/components/index.js
+++ b/resources/assets/js/components/index.js
@@ -14,6 +14,7 @@ let componentMapping = {
'wysiwyg-editor': require('./wysiwyg-editor'),
'markdown-editor': require('./markdown-editor'),
'editor-toolbox': require('./editor-toolbox'),
+ 'image-picker': require('./image-picker'),
};
window.components = {};
diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php
index 70cfc5701..7cdd7c23e 100644
--- a/resources/lang/en/common.php
+++ b/resources/lang/en/common.php
@@ -19,7 +19,7 @@ return [
'description' => 'Description',
'role' => 'Role',
'cover_image' => 'Cover image',
- 'cover_image_description' => 'This image should be approx 300x170px.',
+ 'cover_image_description' => 'This image should be approx 440x250px.',
/**
* Actions
@@ -49,6 +49,7 @@ return [
'toggle_details' => 'Toggle Details',
'toggle_thumbnails' => 'Toggle Thumbnails',
'details' => 'Details',
+
/**
* Header
*/
diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php
index 4a443466b..06eea7ca9 100644
--- a/resources/views/books/form.blade.php
+++ b/resources/views/books/form.blade.php
@@ -16,7 +16,7 @@
@include('components.image-picker', [
'resizeHeight' => '512',
'resizeWidth' => '512',
- 'showRemove' => true,
+ 'showRemove' => false,
'defaultImage' => baseUrl('/book_default_cover.png'),
'currentImage' => @isset($model) ? $model->getBookCover() : baseUrl('/book_default_cover.png') ,
'currentId' => @isset($model) ? $model->image_id : 0,
diff --git a/resources/views/components/image-picker.blade.php b/resources/views/components/image-picker.blade.php
index 2aa39d3d2..034b65cc5 100644
--- a/resources/views/components/image-picker.blade.php
+++ b/resources/views/components/image-picker.blade.php
@@ -14,53 +14,4 @@
@endif
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/resources/views/partials/custom-styles.blade.php b/resources/views/partials/custom-styles.blade.php
index c13051df4..a02f529c7 100644
--- a/resources/views/partials/custom-styles.blade.php
+++ b/resources/views/partials/custom-styles.blade.php
@@ -7,6 +7,7 @@
}
.button-base, .button, input[type="button"], input[type="submit"] {
background-color: {{ setting('app-color') }};
+ border-color: {{ setting('app-color') }};
}
.button-base:hover, .button:hover, input[type="button"]:hover, input[type="submit"]:hover, .button:focus {
background-color: {{ setting('app-color') }};