From c1a1bc01354437c0cb14da94120380b39cf38109 Mon Sep 17 00:00:00 2001 From: Bharadwaja G Date: Mon, 4 Sep 2017 20:27:52 +0530 Subject: [PATCH] Books grid view --- app/Book.php | 40 +++++++-- app/Http/Controllers/BookController.php | 4 +- app/User.php | 2 +- bootstrap/autoload.php | 1 + config/app.php | 2 +- public/book_default_cover.png | Bin 0 -> 5672 bytes public/default.png | Bin 4036 -> 0 bytes resources/assets/js/global.js | 66 -------------- resources/assets/sass/styles.scss | 102 ++++++++++++++-------- resources/lang/de/settings.php | 2 +- resources/lang/en/settings.php | 2 +- resources/lang/es/settings.php | 2 +- resources/lang/fr/settings.php | 2 +- resources/lang/nl/settings.php | 2 +- resources/lang/pt_BR/settings.php | 2 +- resources/lang/sk/settings.php | 2 +- resources/views/books/form.blade.php | 10 +-- resources/views/books/grid-item.blade.php | 31 ++++--- resources/views/books/index.blade.php | 29 ++++-- resources/views/users/edit.blade.php | 7 ++ tests/UserProfileTest.php | 12 +-- 21 files changed, 167 insertions(+), 153 deletions(-) create mode 100644 public/book_default_cover.png delete mode 100644 public/default.png diff --git a/app/Book.php b/app/Book.php index 538505266..fed602332 100644 --- a/app/Book.php +++ b/app/Book.php @@ -3,7 +3,7 @@ class Book extends Entity { - protected $fillable = ['name', 'description', 'image']; + protected $fillable = ['name', 'description', 'image_id']; /** * Get the url for this book. @@ -17,30 +17,45 @@ class Book extends Entity } return baseUrl('/books/' . urlencode($this->slug)); } - - public function getBookCover() + + /** + * Returns book cover image, if book cover not exists return default cover image. + * @param int $height - Height of the image + * @param type $width - Width of the image + * @return type string + */ + public function getBookCover($height = 170, $width = 300) { - $default = baseUrl('/default.png'); - $image = $this->image; + $default = baseUrl('/book_default_cover.png'); + $image = $this->image_id; if ($image === 0 || $image === '0' || $image === null) return $default; try { - $cover = $this->cover ? baseUrl($this->cover->getThumb(120, 192, false)) : $default; + $cover = $this->cover ? baseUrl($this->cover->getThumb($width, $height, false)) : $default; } catch (\Exception $err) { $cover = $default; } return $cover; } - + + /** + * Get an excerpt of this book's name to the specified length or less. + * @param int $length + * @return string + */ public function getHeadingExcerpt($length = 35) { $bookHeading = $this->name; return strlen($bookHeading) > $length ? substr($bookHeading, 0, $length-3) . '...' : $bookHeading; } + /** + * Get the cover image of the book + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ public function cover() { - return $this->belongsTo(Image::class, 'image'); + return $this->belongsTo(Image::class, 'image_id'); } /* * Get the edit url for this book. @@ -88,5 +103,14 @@ class Book extends Entity { return "'BookStack\\\\Book' as entity_type, id, id as entity_id, slug, name, {$this->textField} as text,'' as html, '0' as book_id, '0' as priority, '0' as chapter_id, '0' as draft, created_by, updated_by, updated_at, created_at"; } + + /** + * Get the user that created the page revision + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function createdBy() + { + return $this->belongsTo(User::class, 'created_by'); + } } diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index d515d83a3..b6175d859 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -40,12 +40,14 @@ class BookController extends Controller $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false; $popular = $this->entityRepo->getPopular('book', 4, 0); $new = $this->entityRepo->getRecentlyCreated('book', 4, 0); + $booksViewType = $this->currentUser->books_view_type; $this->setPageTitle('Books'); return view('books/index', [ 'books' => $books, 'recents' => $recents, 'popular' => $popular, - 'new' => $new + 'new' => $new, + 'booksViewType' => $booksViewType ]); } diff --git a/app/User.php b/app/User.php index 703322cbd..264723be9 100644 --- a/app/User.php +++ b/app/User.php @@ -22,7 +22,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon * The attributes that are mass assignable. * @var array */ - protected $fillable = ['name', 'email', 'image_id', 'books_display' ]; + protected $fillable = ['name', 'email', 'image_id', 'books_view_type' ]; /** * The attributes excluded from the model's JSON form. diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php index 29f66ace4..90a8f4e23 100644 --- a/bootstrap/autoload.php +++ b/bootstrap/autoload.php @@ -1,6 +1,7 @@ env('APP_DEBUG', false), + 'debug' => env('APP_DEBUG', true), /* |-------------------------------------------------------------------------- diff --git a/public/book_default_cover.png b/public/book_default_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6c9953e91d59d03a295e49786889317a3e9ca1 GIT binary patch literal 5672 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 F0RZ>{7O(&S literal 0 HcmV?d00001 diff --git a/public/default.png b/public/default.png deleted file mode 100644 index 1147e23e159c6e564c023e4f40dfc06d76432060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4036 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 { - successNotification.show(); - }, 1); -}); -window.Events.listen('warning', function (text) { - warningNotification.find('span').text(text); - warningNotification.show(); -}); -window.Events.listen('error', function (text) { - errorNotification.find('span').text(text); - errorNotification.show(); -}); - -// Notification hiding -notifications.click(function () { - $(this).fadeOut(100); -}); - -// Chapter page list toggles -$('.chapter-toggle').click(function (e) { - e.preventDefault(); - $(this).toggleClass('open'); - $(this).closest('.chapter').find('.inset-list').slideToggle(180); -}); - -// Back to top button -$('#back-to-top').click(function() { - $('#header').smoothScrollTo(); -}); -let scrollTopShowing = false; -let scrollTop = document.getElementById('back-to-top'); -let scrollTopBreakpoint = 1200; -window.addEventListener('scroll', function() { - let scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop || 0; - if (!scrollTopShowing && scrollTopPos > scrollTopBreakpoint) { - scrollTop.style.display = 'block'; - scrollTopShowing = true; - setTimeout(() => { - scrollTop.style.opacity = 0.4; - }, 1); - } else if (scrollTopShowing && scrollTopPos < scrollTopBreakpoint) { - scrollTop.style.opacity = 0; - scrollTopShowing = false; - setTimeout(() => { - scrollTop.style.display = 'none'; - }, 500); - } -}); - // Common jQuery actions $('[data-action="expand-entity-list-details"]').click(function() { $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240); @@ -172,14 +114,6 @@ $(document).ready(function(){ }); }); -// Popup close -$('.popup-close').click(function() { - $(this).closest('.overlay').fadeOut(240); -}); -$('.overlay').click(function(event) { - if (!$(event.target).hasClass('overlay')) return; - $(this).fadeOut(240); -}); // Detect IE for css if(navigator.userAgent.indexOf('MSIE')!==-1 diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index b0b41afc7..04aa0d968 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -228,39 +228,73 @@ $btt-size: 40px; } } - - -.gallery-item { - margin-bottom: 32px; - height: 350px; - overflow: hidden; - border: 1px solid #ccc; - h4 { - font-size: 1.2em; - text-align: center; - height: 55px; - padding: 0px 12px; - } - p { - font-size: 0.8em; - text-align: center; - padding: 0px 12px; - } - &.collapse { - height: 150px; - } -} - -.gallery-image { - margin-top: 5%; - text-align: center; - img { - border-radius: 3px; - } -} - +// styles for Books grid view .cover { - height: 192px; - width: 120px; + width: 290px; border-radius: 3px; - } \ No newline at end of file + } + +.featured-image-container { + position: relative; + overflow: hidden; + background: #F2F2F2; + border: 1px solid #ddd; + border-bottom: 0px; +} + +.featured-image-container img { + display: block; + max-width: 100%; + height: auto; + -webkit-transition: all .5s ease; + -moz-transition: all .5s ease; + -ms-transition: all .5s ease; + -o-transition: all .5s ease; + transition: all .5s ease; +} + +.book-content { + padding: 30px; + border: 1px solid #ddd; + border-top: 0px; + border-bottom-width: 2px; +} +.book-content h2 { + font-size: 1.5em; + line-height: 1.2; + margin: 0 0 10px; +} + +.book-content h2 a { + display: block; + color: #009688;; + text-decoration: none; +} + +.book-content p { + font-size: .85em; + margin: 0 0 10px; + line-height: 1.6em; +} + +.featured-image-container img:hover { + -webkit-transform: scale(1.15); + -moz-transform: scale(1.15); + -ms-transform: scale(1.15); + -o-transform: scale(1.15); + transform: scale(1.15); + opacity: .5; +} +.books-grid-div { + margin-bottom : 20px; +} + +@media (min-width:992px){ + .row.auto-clear .col-md-4:nth-child(3n+1){clear:left;} +} +@media (min-width:992px){ + .row.auto-clear .col-md-4:nth-child(3n+1){clear:left;} +} +@media (max-width:991px){ + .row.auto-clear .col-xs-6:nth-child(2n+1){clear:left;} +} \ No newline at end of file diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 598f9f663..2da517292 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -96,7 +96,7 @@ return [ 'users_delete_warning' => 'Der Benutzer ":userName" wird aus dem System gelöscht.', 'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?', 'users_delete_success' => 'Benutzer erfolgreich gelöscht.', - 'users_books_display_type' => 'Bevorzugtes Display-Layout für Bücher', + 'users_books_view_type' => 'Bevorzugtes Display-Layout für Bücher', 'users_edit' => 'Benutzer bearbeiten', 'users_edit_profile' => 'Profil bearbeiten', 'users_edit_success' => 'Benutzer erfolgreich aktualisisert', diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index 14b5371ff..644ca3a31 100644 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -94,7 +94,7 @@ return [ 'users_external_auth_id' => 'External Authentication ID', 'users_password_warning' => 'Only fill the below if you would like to change your password:', 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.', - 'users_books_display_type' => 'Preferred layout for books viewing', + 'users_books_view_type' => 'Preferred layout for books viewing', 'users_delete' => 'Delete User', 'users_delete_named' => 'Delete user :userName', 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.', diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index 4651247b9..9535d3f45 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -91,7 +91,7 @@ return [ 'users_external_auth_id' => 'ID externo de autenticación', 'users_password_warning' => 'Solo rellene a continuación si desea cambiar su password:', 'users_system_public' => 'Este usuario representa cualquier usuario invitado que visita la aplicación. No puede utilizarse para hacer login sio que es asignado automáticamente.', - 'users_books_display_type' => 'Diseño de pantalla preferido para libros', + 'users_books_view_type' => 'Diseño de pantalla preferido para libros', 'users_delete' => 'Borrar usuario', 'users_delete_named' => 'Borrar usuario :userName', 'users_delete_warning' => 'Se borrará completamente el usuario con el nombre \':userName\' del sistema.', diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 5516e66a4..399afdc9a 100644 --- a/resources/lang/fr/settings.php +++ b/resources/lang/fr/settings.php @@ -91,7 +91,7 @@ return [ 'users_external_auth_id' => 'Identifiant d\'authentification externe', 'users_password_warning' => 'Remplissez ce fomulaire uniquement si vous souhaitez changer de mot de passe:', 'users_system_public' => 'Cet utilisateur représente les invités visitant votre instance. Il est assigné automatiquement aux invités.', - 'users_books_display_type' => 'Disposition d\'affichage préférée pour les livres', + 'users_books_view_type' => 'Disposition d\'affichage préférée pour les livres', 'users_delete' => 'Supprimer un utilisateur', 'users_delete_named' => 'Supprimer l\'utilisateur :userName', 'users_delete_warning' => 'Ceci va supprimer \':userName\' du système.', diff --git a/resources/lang/nl/settings.php b/resources/lang/nl/settings.php index 0323d87d4..7b8adf602 100644 --- a/resources/lang/nl/settings.php +++ b/resources/lang/nl/settings.php @@ -91,7 +91,7 @@ return [ 'users_external_auth_id' => 'External Authentication ID', 'users_password_warning' => 'Vul onderstaande formulier alleen in als je het wachtwoord wilt aanpassen:', 'users_system_public' => 'De eigenschappen van deze gebruiker worden voor elke gastbezoeker gebruikt. Er kan niet mee ingelogd worden en wordt automatisch toegewezen.', - 'users_books_display_type' => 'Voorkeursuitleg voor het weergeven van boeken', + 'users_books_view_type' => 'Voorkeursuitleg voor het weergeven van boeken', 'users_delete' => 'Verwijder gebruiker', 'users_delete_named' => 'Verwijder gebruiker :userName', 'users_delete_warning' => 'Dit zal de gebruiker \':userName\' volledig uit het systeem verwijderen.', diff --git a/resources/lang/pt_BR/settings.php b/resources/lang/pt_BR/settings.php index 6c8ff3039..8ebd2b728 100644 --- a/resources/lang/pt_BR/settings.php +++ b/resources/lang/pt_BR/settings.php @@ -91,7 +91,7 @@ return [ 'users_external_auth_id' => 'ID de Autenticação Externa', 'users_password_warning' => 'Preencha os dados abaixo caso queira modificar a sua senha:', 'users_system_public' => 'Esse usuário representa quaisquer convidados que visitam o aplicativo. Ele não pode ser usado para login.', - 'users_books_display_type' => 'Layout preferido para mostrar livros', + 'users_books_view_type' => 'Layout preferido para mostrar livros', 'users_delete' => 'Excluir Usuário', 'users_delete_named' => 'Excluir :userName', 'users_delete_warning' => 'A ação vai excluir completamente o usuário de nome \':userName\' do sistema.', diff --git a/resources/lang/sk/settings.php b/resources/lang/sk/settings.php index 8a8d93e59..4438f8038 100644 --- a/resources/lang/sk/settings.php +++ b/resources/lang/sk/settings.php @@ -91,7 +91,7 @@ return [ 'users_external_auth_id' => 'Externé autentifikačné ID', 'users_password_warning' => 'Pole nižšie vyplňte iba ak chcete zmeniť heslo:', 'users_system_public' => 'Tento účet reprezentuje každého hosťovského používateľa, ktorý navštívi Vašu inštanciu. Nedá sa pomocou neho prihlásiť a je priradený automaticky.', - 'users_books_display_type' => 'Preferované rozloženie pre prezeranie kníh', + 'users_books_view_type' => 'Preferované rozloženie pre prezeranie kníh', 'users_delete' => 'Zmazať používateľa', 'users_delete_named' => 'Zmazať používateľa :userName', 'users_delete_warning' => ' Toto úplne odstráni používateľa menom \':userName\' zo systému.', diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index fc30093d2..6356da72b 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -14,13 +14,13 @@

{{ trans('common.cover_image_description') }}

@include('components.image-picker', [ - 'resizeHeight' => '192', - 'resizeWidth' => '120', + 'resizeHeight' => '512', + 'resizeWidth' => '512', 'showRemove' => true, 'defaultImage' => baseUrl('/default.png'), - 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') , - 'currentId' => @isset($model) ? $model->image : 0, - 'name' => 'image', + 'currentImage' => @isset($model) ? $model->getBookCover() : baseUrl('/default.png') , + 'currentId' => @isset($model) ? $model->image_id : 0, + 'name' => 'image_id', 'imageClass' => 'cover' ]) diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php index 3c0ec1ef7..74801ec84 100644 --- a/resources/views/books/grid-item.blade.php +++ b/resources/views/books/grid-item.blade.php @@ -1,19 +1,18 @@ -
-
diff --git a/tests/UserProfileTest.php b/tests/UserProfileTest.php index e0c87d992..eabfce004 100644 --- a/tests/UserProfileTest.php +++ b/tests/UserProfileTest.php @@ -95,26 +95,26 @@ class UserProfileTest extends BrowserKitTest ->see('cannot delete the guest user'); } - public function test_books_display_is_list() + public function test_books_view_is_list() { $editor = $this->getEditor([ - 'books_display' => 'list' + 'books_view_type' => 'list' ]); $this->actingAs($editor) ->visit('/books') - ->pageNotHasElement('.gallery-item') + ->pageNotHasElement('.featured-image-container') ->pageHasElement('.entity-list-item'); } - public function test_books_display_is_grid() + public function test_books_view_is_grid() { $editor = $this->getEditor([ - 'books_display' => 'grid' + 'books_view_type' => 'grid' ]); $this->actingAs($editor) ->visit('/books') - ->pageHasElement('.gallery-item'); + ->pageHasElement('.featured-image-container'); } }