From 6557fbb666536c2781179c63866dfb2807b6405c Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 28 Jun 2017 18:51:32 +0530 Subject: [PATCH 01/89] commit --- app/Http/Controllers/BookController.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 8996ae64a..2e0a76b39 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -36,11 +36,12 @@ class BookController extends Controller */ public function index() { - $books = $this->entityRepo->getAllPaginated('book', 10); + $books = $this->entityRepo->getAllPaginated('book', 16); $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false; - $popular = $this->entityRepo->getPopular('book', 4, 0); + $popular = $this->entityRepo->getPopular('book', 3, 0); + $display = $this->currentUser->display; $this->setPageTitle('Books'); - return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular]); + return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display } /** From 8924618d122fb9e5894af24f2e9cc4678aac3350 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 28 Jun 2017 18:56:17 +0530 Subject: [PATCH 02/89] test --- app/Http/Controllers/BookController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 2e0a76b39..4313a4e20 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -41,7 +41,7 @@ class BookController extends Controller $popular = $this->entityRepo->getPopular('book', 3, 0); $display = $this->currentUser->display; $this->setPageTitle('Books'); - return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display + return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display } /** From af72f0d490251d988bc2fe0cbffc50ec09527968 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Thu, 29 Jun 2017 18:54:04 +0530 Subject: [PATCH 03/89] Bookstack grid view. --- app/Http/Controllers/BookController.php | 23 +++++++++++++++++++---- app/User.php | 2 +- resources/lang/en/common.php | 1 + resources/views/books/create.blade.php | 2 +- resources/views/books/edit.blade.php | 2 +- resources/views/books/form.blade.php | 4 ++++ resources/views/books/grid-item.blade.php | 15 +++++++++++++++ resources/views/books/index.blade.php | 22 ++++++++++++++-------- resources/views/users/edit.blade.php | 9 +++++++++ 9 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 resources/views/books/grid-item.blade.php diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 8996ae64a..086929558 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -40,7 +40,7 @@ class BookController extends Controller $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false; $popular = $this->entityRepo->getPopular('book', 4, 0); $this->setPageTitle('Books'); - return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular]); + return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display } /** @@ -67,7 +67,14 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); + $image = $request->file('image'); + $input = time().'-'.$image->getClientOriginalName(); + $destinationPath = public_path('uploads/book/'); + $image->move($destinationPath, $input); + $path = baseUrl('/uploads/book/').'/'.$input; $book = $this->entityRepo->createFromInput('book', $request->all()); + $book->image = $path; + $book->save(); Activity::add($book, 'book_create', $book->id); return redirect($book->getUrl()); } @@ -114,9 +121,17 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); - Activity::add($book, 'book_update', $book->id); - return redirect($book->getUrl()); + + $input = $request->file('image')->getClientOriginalName(); + echo $input; + $destinationPath = public_path('uploads/book/'); + $request->file('image')->move($destinationPath, $input); + $path = baseUrl('/uploads/book/').'/'.$input; + $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); + $book->image = $path; + $book->save(); + Activity::add($book, 'book_update', $book->id); + return redirect($book->getUrl()); } /** diff --git a/app/User.php b/app/User.php index 8033557e4..3d77cd8ee 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']; + protected $fillable = ['name', 'email', 'image_id', 'display']; //to write in user database /** * The attributes excluded from the model's JSON form. diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index e1d74c95e..dae6d0509 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -44,6 +44,7 @@ return [ 'no_items' => 'No items available', 'back_to_top' => 'Back to top', 'toggle_details' => 'Toggle Details', + 'toggle_thumbnails' => 'Toggle Thumbnails', /** * Header diff --git a/resources/views/books/create.blade.php b/resources/views/books/create.blade.php index 2c629e699..36c94af62 100644 --- a/resources/views/books/create.blade.php +++ b/resources/views/books/create.blade.php @@ -4,7 +4,7 @@

{{ trans('entities.books_create') }}

-
+ @include('books/form')
diff --git a/resources/views/books/edit.blade.php b/resources/views/books/edit.blade.php index 2419b68da..02768b301 100644 --- a/resources/views/books/edit.blade.php +++ b/resources/views/books/edit.blade.php @@ -14,7 +14,7 @@

{{ trans('entities.books_edit') }}

-
+ @include('books/form', ['model' => $book])
diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index b1484d129..e5ee47a82 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -10,6 +10,10 @@ @include('form/textarea', ['name' => 'description'])
+
+ + +
{{ trans('common.cancel') }} diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php new file mode 100644 index 000000000..a37458ec6 --- /dev/null +++ b/resources/views/books/grid-item.blade.php @@ -0,0 +1,15 @@ +
+
+

+ {{$book->name}} +
+ image === NULL) src="{{baseUrl('/default.jpg')}}" @else src="{{$book->image}}" @endif alt="{{$book->name}}"> +
+

+ @if(isset($book->searchSnippet)) +

{!! $book->searchSnippet !!}

+ @else +

{{ $book->getExcerpt() }}

+ @endif +
+
\ No newline at end of file diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index c090a127e..76e521633 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -5,12 +5,12 @@
-
-
+
@if($currentUser->can('book-create-all')) {{ trans('entities.books_create') }} @endif + {{ trans('common.toggle_thumbnails') }}
@@ -20,14 +20,19 @@
-
+

{{ trans('entities.books') }}

+ {!! $books->render() !!} @if(count($books) > 0) + @if($display=='grid') + @foreach($books as $book) + @include('books/grid-item', ['book' => $book]) + @endforeach + @else @foreach($books as $book) - @include('books/list-item', ['book' => $book]) -
- @endforeach - {!! $books->render() !!} + @include('books/list-item', ['book' => $book]) + @endforeach + @endif @else

{{ trans('entities.books_empty') }}

@if(userCan('books-create-all')) @@ -35,7 +40,7 @@ @endif @endif
-
+
@if($recents)
 
@@ -53,6 +58,7 @@ @endif
+ {!! $books->render() !!}
diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index ff3475194..3cacff645 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -49,6 +49,15 @@ @endforeach
+ +
+ + +
+
From fdf139edb20f2c6010824a3268e432b9b5e8249b Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Tue, 4 Jul 2017 15:04:57 +0530 Subject: [PATCH 04/89] Changing column size for responsiveness --- resources/views/books/grid-item.blade.php | 4 +--- resources/views/books/index.blade.php | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php index a37458ec6..93b818f96 100644 --- a/resources/views/books/grid-item.blade.php +++ b/resources/views/books/grid-item.blade.php @@ -1,5 +1,4 @@ -
- \ No newline at end of file diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index 76e521633..693c909aa 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -5,13 +5,13 @@
@@ -20,7 +20,7 @@
-
+

{{ trans('entities.books') }}

{!! $books->render() !!} @if(count($books) > 0) @@ -40,7 +40,7 @@ @endif @endif
-
+
@if($recents)
 
From 947c58f2274f0e5a698e71486f8fae5a894111b5 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 12:09:01 +0530 Subject: [PATCH 05/89] Applied required changes in BookStack. --- app/Book.php | 2 +- app/Http/Controllers/BookController.php | 34 ++++++++++++------- app/User.php | 2 +- .../2014_10_12_000000_create_users_table.php | 2 ++ .../2015_07_12_114933_create_books_table.php | 1 + resources/assets/sass/styles.scss | 25 ++++++++++++++ resources/views/books/index.blade.php | 2 +- resources/views/users/edit.blade.php | 10 +++--- 8 files changed, 56 insertions(+), 22 deletions(-) diff --git a/app/Book.php b/app/Book.php index 06c00945d..67bd4f5b2 100644 --- a/app/Book.php +++ b/app/Book.php @@ -3,7 +3,7 @@ class Book extends Entity { - protected $fillable = ['name', 'description']; + protected $fillable = ['name', 'description', 'image']; /** * Get the url for this book. diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 086929558..9c1154281 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -36,11 +36,12 @@ class BookController extends Controller */ public function index() { - $books = $this->entityRepo->getAllPaginated('book', 10); + $books = $this->entityRepo->getAllPaginated('book', 16); $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false; - $popular = $this->entityRepo->getPopular('book', 4, 0); + $popular = $this->entityRepo->getPopular('book', 3, 0); + $books_display = $this->currentUser->books_display; $this->setPageTitle('Books'); - return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display + return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'books_display' => $books_display]); } /** @@ -68,10 +69,7 @@ class BookController extends Controller 'description' => 'string|max:1000' ]); $image = $request->file('image'); - $input = time().'-'.$image->getClientOriginalName(); - $destinationPath = public_path('uploads/book/'); - $image->move($destinationPath, $input); - $path = baseUrl('/uploads/book/').'/'.$input; + $path = $this->getBookCoverURL($image); $book = $this->entityRepo->createFromInput('book', $request->all()); $book->image = $path; $book->save(); @@ -121,12 +119,8 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - - $input = $request->file('image')->getClientOriginalName(); - echo $input; - $destinationPath = public_path('uploads/book/'); - $request->file('image')->move($destinationPath, $input); - $path = baseUrl('/uploads/book/').'/'.$input; + $image = $request->file('image'); + $path = $this->getBookCoverURL($image); $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); $book->image = $path; $book->save(); @@ -134,6 +128,20 @@ class BookController extends Controller return redirect($book->getUrl()); } + /** + * Generate URL for book cover image + * @param $image + * @return $path + */ + public function getBookCoverURL($image) + { + $input = time().'-'.$image->getClientOriginalName(); + $destinationPath = public_path('uploads/book/'); + $image->move($destinationPath, $input); + $path = baseUrl('/uploads/book/').'/'.$input; + return $path; + } + /** * Shows the page to confirm deletion * @param $bookSlug diff --git a/app/User.php b/app/User.php index 3d77cd8ee..24eca12f3 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', 'display']; //to write in user database + protected $fillable = ['name', 'email', 'image_id', 'books_display']; /** * The attributes excluded from the model's JSON form. diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 17e71de5f..62ac94b60 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -18,6 +18,7 @@ class CreateUsersTable extends Migration $table->string('email')->unique(); $table->string('password', 60); $table->rememberToken(); + $table->string('books_display')->default('grid'); $table->nullableTimestamps(); }); @@ -26,6 +27,7 @@ class CreateUsersTable extends Migration 'name' => 'Admin', 'email' => 'admin@admin.com', 'password' => bcrypt('password'), + 'books_display' => 'grid', 'created_at' => \Carbon\Carbon::now()->toDateTimeString(), 'updated_at' => \Carbon\Carbon::now()->toDateTimeString() ]); diff --git a/database/migrations/2015_07_12_114933_create_books_table.php b/database/migrations/2015_07_12_114933_create_books_table.php index 4220809d5..b8a6c9829 100644 --- a/database/migrations/2015_07_12_114933_create_books_table.php +++ b/database/migrations/2015_07_12_114933_create_books_table.php @@ -24,6 +24,7 @@ class CreateBooksTable extends Migration $table->string('slug')->indexed(); $table->text('description'); $table->nullableTimestamps(); + $table->string('image'); }); } diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index afb9d531b..bfa95fc1e 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -276,3 +276,28 @@ $btt-size: 40px; +.galleryItem { + width: 22%; + padding: 5px; + float: left; + height: 330px; + margin: 2% 1% 2% 1%; + overflow: hidden; + border: 1px solid #9e9e9e; + h3 { + font-size: 1.2em; + text-align: center; + } + p { + font-size: 0.8em; + text-align: center; + } + img { + height: 192px; + width: 120px; + margin-top: 5%; + } + &.collapse { + height: 130px; + } +} \ No newline at end of file diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index 693c909aa..de13ab5cd 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -24,7 +24,7 @@

{{ trans('entities.books') }}

{!! $books->render() !!} @if(count($books) > 0) - @if($display=='grid') + @if($books_display=='grid') @foreach($books as $book) @include('books/grid-item', ['book' => $book]) @endforeach diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 3cacff645..152567d6c 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -49,15 +49,13 @@ @endforeach
-
- - + +
-
From bb2d85965faa7946da3e993a0902d3b547296e9b Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 12:29:16 +0530 Subject: [PATCH 06/89] Removed duplicated styles. --- resources/assets/sass/styles.scss | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index 4f9c16efb..96001d7be 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -301,29 +301,3 @@ $btt-size: 40px; height: 130px; } } - -.galleryItem { - width: 22%; - padding: 5px; - float: left; - height: 330px; - margin: 2% 1% 2% 1%; - overflow: hidden; - border: 1px solid #9e9e9e; - h3 { - font-size: 1.2em; - text-align: center; - } - p { - font-size: 0.8em; - text-align: center; - } - img { - height: 192px; - width: 120px; - margin-top: 5%; - } - &.collapse { - height: 130px; - } -} \ No newline at end of file From d089eaf754b06c8e03682332b0b4d646bc24f963 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 12:32:39 +0530 Subject: [PATCH 07/89] Changes in User edit profile page. --- resources/views/users/edit.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 152567d6c..130921588 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -52,8 +52,8 @@
From e10d4b91cf6740db5769023fef04472ecc6a330a Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 12:36:26 +0530 Subject: [PATCH 08/89] styles.scss --- resources/assets/sass/styles.scss | 2 -- 1 file changed, 2 deletions(-) diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index 96001d7be..34d925383 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -274,8 +274,6 @@ $btt-size: 40px; } } - - .galleryItem { width: 22%; padding: 5px; From 026de8c5cad4fd92ad1e0e5be81464dcc79d7c69 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 12:48:41 +0530 Subject: [PATCH 09/89] Thumbnail toggle function. --- resources/assets/js/global.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index dc6802e12..0e82c23d8 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -153,6 +153,14 @@ $('[data-action="expand-entity-list-details"]').click(function() { $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240); }); +// Toggle thumbnail::hide image and reduce grid size +$(document).ready(function(){ + $('[data-action="expand-thumbnail"]').click(function(){ + $('.galleryItem').toggleClass("collapse"); + $('.galleryItem').find('img').slideToggle(50); + }); +}); + // Popup close $('.popup-close').click(function() { $(this).closest('.overlay').fadeOut(240); From 6eccb3d5b9913fd53a2ec1c264c35d86da1f13f0 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 16:08:04 +0530 Subject: [PATCH 10/89] Adding new migration. --- .../2014_10_12_000000_create_users_table.php | 2 - .../2015_07_12_114933_create_books_table.php | 1 - ...7_07_05_102650_add_cover_image_display.php | 40 +++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 database/migrations/2017_07_05_102650_add_cover_image_display.php diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index ce605b7cd..17e71de5f 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -17,7 +17,6 @@ class CreateUsersTable extends Migration $table->string('name'); $table->string('email')->unique(); $table->string('password', 60); - $table->string('books_display')->default('grid'); $table->rememberToken(); $table->nullableTimestamps(); }); @@ -27,7 +26,6 @@ class CreateUsersTable extends Migration 'name' => 'Admin', 'email' => 'admin@admin.com', 'password' => bcrypt('password'), - 'books_display' => 'grid', 'created_at' => \Carbon\Carbon::now()->toDateTimeString(), 'updated_at' => \Carbon\Carbon::now()->toDateTimeString() ]); diff --git a/database/migrations/2015_07_12_114933_create_books_table.php b/database/migrations/2015_07_12_114933_create_books_table.php index b87b99db2..4220809d5 100644 --- a/database/migrations/2015_07_12_114933_create_books_table.php +++ b/database/migrations/2015_07_12_114933_create_books_table.php @@ -23,7 +23,6 @@ class CreateBooksTable extends Migration $table->string('name'); $table->string('slug')->indexed(); $table->text('description'); - $table->string('image'); $table->nullableTimestamps(); }); } diff --git a/database/migrations/2017_07_05_102650_add_cover_image_display.php b/database/migrations/2017_07_05_102650_add_cover_image_display.php new file mode 100644 index 000000000..d9a7f94ee --- /dev/null +++ b/database/migrations/2017_07_05_102650_add_cover_image_display.php @@ -0,0 +1,40 @@ +string('books_display',10)->default('grid'); + }); + + Schema::table('books', function (Blueprint $table) { + $table->string('image'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('books_display'); + }); + + Schema::table('books', function (Blueprint $table) { + $table->dropColumn('image'); + }); + } +} From e88a06291e01932e38a3d91b3d7e4ab6e89a654d Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 16:09:20 +0530 Subject: [PATCH 11/89] Updated toggle thumbnails function. --- resources/assets/js/global.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index 0e82c23d8..3a288f791 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -153,11 +153,10 @@ $('[data-action="expand-entity-list-details"]').click(function() { $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240); }); -// Toggle thumbnail::hide image and reduce grid size +// Toggle thumbnails $(document).ready(function(){ $('[data-action="expand-thumbnail"]').click(function(){ - $('.galleryItem').toggleClass("collapse"); - $('.galleryItem').find('img').slideToggle(50); + $('.galleryItem').toggleClass("collapse").find('img').slideToggle(50); }); }); From cc553cc93d271b828408df880971a7d09125f167 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 16:11:15 +0530 Subject: [PATCH 12/89] Added labels for 'Thumbnail toggle' and 'Cover image' in different languages. --- resources/lang/de/common.php | 3 ++- resources/lang/de/settings.php | 1 + resources/lang/en/common.php | 1 + resources/lang/en/settings.php | 1 + resources/lang/es/common.php | 3 ++- resources/lang/es/settings.php | 1 + resources/lang/fr/common.php | 3 ++- resources/lang/fr/settings.php | 1 + resources/lang/nl/common.php | 3 ++- resources/lang/nl/settings.php | 1 + resources/lang/pt_BR/common.php | 3 ++- resources/lang/pt_BR/settings.php | 1 + resources/lang/sk/common.php | 3 ++- resources/lang/sk/settings.php | 1 + 14 files changed, 20 insertions(+), 6 deletions(-) diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index 7ad1743a0..c3ee51abb 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -17,6 +17,7 @@ return [ 'name' => 'Name', 'description' => 'Beschreibung', 'role' => 'Rolle', + 'cover_image' => 'Titelbild', /** * Actions @@ -43,7 +44,7 @@ return [ 'no_items' => 'Keine Einträge gefunden.', 'back_to_top' => 'nach oben', 'toggle_details' => 'Details zeigen/verstecken', - + 'toggle_thumbnails' => 'Thumbnails zeigen/verstecken', /** * Header */ diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 668eecf33..21d65321f 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -91,6 +91,7 @@ return [ 'users_external_auth_id' => 'Externe Authentifizierungs-ID', 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:', 'users_system_public' => 'Dieser Benutzer repräsentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', + 'users_books_display_type' => 'Wählen Sie die Art der Ansicht aus', 'users_delete' => 'Benutzer löschen', 'users_delete_named' => 'Benutzer :userName löschen', 'users_delete_warning' => 'Sie möchten den Benutzer \':userName\' gänzlich aus dem System löschen.', diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index dae6d0509..c05cfa56c 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -17,6 +17,7 @@ return [ 'name' => 'Name', 'description' => 'Description', 'role' => 'Role', + 'cover_image' => 'Cover image', /** * Actions diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index 31163e87e..e95bf35a3 100644 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -91,6 +91,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' => 'Select the type of view', '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/common.php b/resources/lang/es/common.php index 3a62a2177..9a8fafc95 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nombre', 'description' => 'Descripción', 'role' => 'Rol', - + 'cover_image' => 'Imagen de portada', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'No hay items disponibles', 'back_to_top' => 'Volver arriba', 'toggle_details' => 'Alternar detalles', + 'toggle_thumbnails' => 'Alternar miniaturas', /** * Header diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index cd6a8b8d9..90bb0db2c 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -91,6 +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' => 'Seleccione el tipo de vista', '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/common.php b/resources/lang/fr/common.php index 5eb4b8fa8..fe8bb761a 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nom', 'description' => 'Description', 'role' => 'Rôle', - + 'cover_image' => 'Image de couverture', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Aucun élément', 'back_to_top' => 'Retour en haut', 'toggle_details' => 'Afficher les détails', + 'toggle_thumbnails' => 'Afficher les vignettes', /** * Header diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 8a3756527..288c56d5a 100644 --- a/resources/lang/fr/settings.php +++ b/resources/lang/fr/settings.php @@ -91,6 +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' => 'Sélectionnez le type de vue', '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/common.php b/resources/lang/nl/common.php index bdde9eb95..a096c1d22 100644 --- a/resources/lang/nl/common.php +++ b/resources/lang/nl/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Naam', 'description' => 'Beschrijving', 'role' => 'Rol', - + 'cover_image' => 'Omslagfoto', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Geen items beschikbaar', 'back_to_top' => 'Terug naar boven', 'toggle_details' => 'Details Weergeven', + 'toggle_thumbnails' => 'Thumbnails Weergeven', /** * Header diff --git a/resources/lang/nl/settings.php b/resources/lang/nl/settings.php index 7408a2dc3..7b2f94530 100644 --- a/resources/lang/nl/settings.php +++ b/resources/lang/nl/settings.php @@ -91,6 +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' => 'Selecteer het type weergave', '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/common.php b/resources/lang/pt_BR/common.php index 820ba219c..eba301929 100644 --- a/resources/lang/pt_BR/common.php +++ b/resources/lang/pt_BR/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nome', 'description' => 'Descrição', 'role' => 'Regra', - + 'cover_image' => 'Imagem de capa', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Nenhum item disponível', 'back_to_top' => 'Voltar ao topo', 'toggle_details' => 'Alternar Detalhes', + 'toggle_thumbnails' => 'Alternar Miniaturas', /** * Header diff --git a/resources/lang/pt_BR/settings.php b/resources/lang/pt_BR/settings.php index b8d062b5f..b46eda8df 100644 --- a/resources/lang/pt_BR/settings.php +++ b/resources/lang/pt_BR/settings.php @@ -91,6 +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' => 'Selecione o tipo de exibição', '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/common.php b/resources/lang/sk/common.php index 100981597..19ba665b5 100644 --- a/resources/lang/sk/common.php +++ b/resources/lang/sk/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Meno', 'description' => 'Popis', 'role' => 'Rola', - + 'cover_image' => 'Obal knihy', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Žiadne položky nie sú dostupné', 'back_to_top' => 'Späť nahor', 'toggle_details' => 'Prepnúť detaily', + 'toggle_thumbnails' => 'Prepnúť náhľady', /** * Header diff --git a/resources/lang/sk/settings.php b/resources/lang/sk/settings.php index 643b4b8ff..1c745fcf8 100644 --- a/resources/lang/sk/settings.php +++ b/resources/lang/sk/settings.php @@ -91,6 +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' => 'Vyberte typ zobrazenia', '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.', From 5b736c3b36f1d366735646505d35ee1121e716c0 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 16:12:29 +0530 Subject: [PATCH 13/89] Updated views to support different languages. --- resources/views/books/form.blade.php | 2 +- resources/views/users/edit.blade.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index e5ee47a82..afa6c48ea 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -11,7 +11,7 @@
- +
diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 130921588..c15e34974 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -50,10 +50,10 @@
- +
From 6ad24a6bee423f376a5305b796278ad08f0142dd Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 18:32:38 +0530 Subject: [PATCH 14/89] Changed public getImageURL function to private. --- app/Http/Controllers/BookController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 7aa434a80..aca993bba 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -133,7 +133,7 @@ class BookController extends Controller * @param $image * @return $path */ - public function getBookCoverURL($image) + private function getBookCoverURL($image) { $input = time().'-'.$image->getClientOriginalName(); $destinationPath = public_path('uploads/book/'); From f51db4b9f6d65896d6682f50d9b092da6683e59b Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 5 Jul 2017 19:58:52 +0530 Subject: [PATCH 15/89] Resolved responsiveness issues --- resources/assets/sass/styles.scss | 5 +---- resources/views/books/grid-item.blade.php | 24 ++++++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index 34d925383..e15b14d96 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -275,11 +275,8 @@ $btt-size: 40px; } .galleryItem { - width: 22%; - padding: 5px; - float: left; + margin-bottom: 32px; height: 330px; - margin: 2% 1% 2% 1%; overflow: hidden; border: 1px solid #9e9e9e; h3 { diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php index 93b818f96..095cccb24 100644 --- a/resources/views/books/grid-item.blade.php +++ b/resources/views/books/grid-item.blade.php @@ -1,13 +1,15 @@ -
-

- {{$book->name}} -
- image === NULL) src="{{baseUrl('/default.jpg')}}" @else src="{{$book->image}}" @endif alt="{{$book->name}}"> -
-

- @if(isset($book->searchSnippet)) -

{!! $book->searchSnippet !!}

- @else +
+
+

+ {{$book->name}} +
+ image === NULL) src="{{baseUrl('/default.jpg')}}" @else src="{{$book->image}}" @endif alt="{{$book->name}}"> +
+

+ @if(isset($book->searchSnippet)) +

{!! $book->searchSnippet !!}

+ @else

{{ $book->getExcerpt() }}

- @endif + @endif +
\ No newline at end of file From 16a09e8ff6dca8014bed80436458cb61b0b0ff4b Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Thu, 6 Jul 2017 10:03:40 +0530 Subject: [PATCH 16/89] Deletion of image file on book deletion. --- app/Http/Controllers/BookController.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index aca993bba..b64841220 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -8,6 +8,7 @@ use BookStack\Services\ExportService; use Illuminate\Http\Request; use Illuminate\Http\Response; use Views; +use File; class BookController extends Controller { @@ -135,11 +136,18 @@ class BookController extends Controller */ private function getBookCoverURL($image) { - $input = time().'-'.$image->getClientOriginalName(); - $destinationPath = public_path('uploads/book/'); - $image->move($destinationPath, $input); - $path = baseUrl('/uploads/book/').'/'.$input; - return $path; + if(is_null($image)) + { + return; + } + else + { + $input = time().'-'.$image->getClientOriginalName(); + $destinationPath = public_path('uploads/book/'); + $image->move($destinationPath, $input); + $path = baseUrl('/uploads/book/').'/'.$input; + return $path; + } } /** @@ -250,6 +258,8 @@ class BookController extends Controller $book = $this->entityRepo->getBySlug('book', $bookSlug); $this->checkOwnablePermission('book-delete', $book); Activity::addMessage('book_delete', 0, $book->name); + $file = basename($book->image); + File::delete('uploads/book/'.$file); $this->entityRepo->destroyBook($book); return redirect('/books'); } From c5f11e45166c97dc10672e3d7ba9d2fea8411a2e Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Thu, 6 Jul 2017 10:05:11 +0530 Subject: [PATCH 17/89] Fixed pagination on change of display type. --- resources/views/books/index.blade.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index de13ab5cd..c5dd38a87 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -22,16 +22,19 @@

{{ trans('entities.books') }}

- {!! $books->render() !!} @if(count($books) > 0) @if($books_display=='grid') @foreach($books as $book) @include('books/grid-item', ['book' => $book]) @endforeach +
+ {!! $books->render() !!} +
@else - @foreach($books as $book) + @foreach($books as $book) @include('books/list-item', ['book' => $book]) @endforeach + {!! $books->render() !!} @endif @else

{{ trans('entities.books_empty') }}

@@ -58,7 +61,6 @@ @endif
- {!! $books->render() !!}
From 144a6e469d7ee21e2b452269c842157ab25bee42 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Fri, 7 Jul 2017 16:29:38 +0530 Subject: [PATCH 18/89] Updated cover image upload and delete function. --- app/Book.php | 18 ++++++++++ app/Http/Controllers/BookController.php | 32 ------------------ ...7_07_05_102650_add_cover_image_display.php | 2 +- public/default.png | Bin 0 -> 3338 bytes resources/assets/sass/styles.scss | 5 +++ resources/views/books/create.blade.php | 3 +- resources/views/books/edit.blade.php | 4 +-- resources/views/books/form.blade.php | 18 +++++++--- resources/views/books/grid-item.blade.php | 22 ++++++------ 9 files changed, 53 insertions(+), 51 deletions(-) create mode 100644 public/default.png diff --git a/app/Book.php b/app/Book.php index 67bd4f5b2..a489acf8b 100644 --- a/app/Book.php +++ b/app/Book.php @@ -18,6 +18,24 @@ class Book extends Entity return baseUrl('/books/' . urlencode($this->slug)); } +public function getBookCover($size = 120) + { + $default = baseUrl('/default.png'); + $image = $this->image; + if ($image === 0 || $image === '0' || $image === null) + return $default; + try { + $cover = $this->cover ? baseUrl($this->cover->getThumb(120, 192, false)) : $default; + } catch (\Exception $err) { + $cover = $default; + } + return $cover; + } + +public function cover() + { + return $this->belongsTo(Image::class, 'image'); + } /* * Get the edit url for this book. * @return string diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index b64841220..eecb7839f 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -8,7 +8,6 @@ use BookStack\Services\ExportService; use Illuminate\Http\Request; use Illuminate\Http\Response; use Views; -use File; class BookController extends Controller { @@ -69,11 +68,7 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $image = $request->file('image'); - $path = $this->getBookCoverURL($image); $book = $this->entityRepo->createFromInput('book', $request->all()); - $book->image = $path; - $book->save(); Activity::add($book, 'book_create', $book->id); return redirect($book->getUrl()); } @@ -120,36 +115,11 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $image = $request->file('image'); - $path = $this->getBookCoverURL($image); $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); - $book->image = $path; - $book->save(); Activity::add($book, 'book_update', $book->id); return redirect($book->getUrl()); } - /** - * Generate URL for book cover image - * @param $image - * @return $path - */ - private function getBookCoverURL($image) - { - if(is_null($image)) - { - return; - } - else - { - $input = time().'-'.$image->getClientOriginalName(); - $destinationPath = public_path('uploads/book/'); - $image->move($destinationPath, $input); - $path = baseUrl('/uploads/book/').'/'.$input; - return $path; - } - } - /** * Shows the page to confirm deletion * @param $bookSlug @@ -258,8 +228,6 @@ class BookController extends Controller $book = $this->entityRepo->getBySlug('book', $bookSlug); $this->checkOwnablePermission('book-delete', $book); Activity::addMessage('book_delete', 0, $book->name); - $file = basename($book->image); - File::delete('uploads/book/'.$file); $this->entityRepo->destroyBook($book); return redirect('/books'); } diff --git a/database/migrations/2017_07_05_102650_add_cover_image_display.php b/database/migrations/2017_07_05_102650_add_cover_image_display.php index d9a7f94ee..396112744 100644 --- a/database/migrations/2017_07_05_102650_add_cover_image_display.php +++ b/database/migrations/2017_07_05_102650_add_cover_image_display.php @@ -18,7 +18,7 @@ class AddCoverImageDisplay extends Migration }); Schema::table('books', function (Blueprint $table) { - $table->string('image'); + $table->integer('image'); }); } diff --git a/public/default.png b/public/default.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7b737e7da36a919d9d389cbd980938cfae2435 GIT binary patch literal 3338 zcmd^BZCH|5AHS`o+j_B7&kS+FV!s8$aTJwEKV8HQ<(&?c) z7i3cQ!&kbY*6qhOrP-!c`Rv$r5JL$)W@B^w8K2qM=mOfV4~mKo*&M4V?zkllT*ZCa zdt$p^_#8nxJx@s1hKVpA3H$p|p`qdCxluv6lf~kdC4oCY{T{R)`g|Gw-!l07cKQ?1 z|LB(L*JP^Hav*zaRaMoD$*7}H-Yn$yX>|22#VKUZ>%ye_>Gs@s&2x=65fyVi;`(?+ zE@Dm(IkPZ$G%Rz9x@ZMz--^oNm zBn)gWIqcx**qIMEZ%ZCBd2t}y6x<H$TG0I=<~(&93C;n0)>0PLa#O zJ$Aj5bJ1>_XJ*HRu8~Ss`skZCE>^dVL{K0GqkH8=&n+Fjy}d^-gJR#faU-z9>|uD8 zy%l7v&#UJ_%Rxj1i^*VAhtp@K27d7qFwl57Q9z|-`T_rx)^gjYSZC}u~om$ zlhj$Wbji_Q%$T74wLMMKIt9*7&Lav1sV3*loSe-YHss~yMc5n$3nnKg^&>oq@-aBO za`3T2fjJo;->KDVQ6BEK+CJJShm@C-lf$~#&BxfEKe4@4m!T4;7T{fQ8nzg=vMUrl+l9Z!Mxu0H}asU)! zowfCx?p8n^x}s|bR%lQTC!5bpwc}YIixpnr8Cr|>)l1}|c4PP-m#iDP@(cpWTG1Ew6lAwnmC_Ex#XGJajXT9*j(vb)NF1v|!~EkEzFB=<^)`cP$G8 z;HQw{4!vIAJ>ar-=+2!xu#A-E7`G}R5E@7kpiHogML0pi;cT4X`7eAL!Q^SrErD^8 zy;PCrfbdfgrqj(m^nt^93!{&`j6l>gT9vF#6&1CdYPe!oMF>!~OeWLsK*}#rWo)kk zaR~J^P{=Gvqb^aYRQW4%B#!;Re{HCtP&9JB0Kmj+M#hO5;8386S0cP=$AH!fzE;=Yyk5*UB|TA9FmH}r_z}^z!}H4nB>gil%4G6 z9~J_xlb&CMm35uDDo;4^sRo{fH2azG5*Ztp9go1U6U0AS+#(LdsGj1wCz0a|6=Qc1^HbdXmrM>S0t*()Vwn+DC^U(y5cxVcK+hK8L6w<5c%EAMF)`4 zOTW1ZE5GeflcLQr*8VZi$rD7um{P*5XE1<#CGZD?Cjgwq5x-xXlxJnyc=VI|`vDe0 z`Wdzr%Wat&EEa2)NHAQ$GX_nA8#W~HNyG1&fh7VzO=~-cU;)Wibe$QGH?iNxA->Fx zEWomZdBU`5_XOG6hlV>be7OicuimTZ%>d@0>`K60{fNh&pN5im<2Bnja`G@YLwA#9lwzi;c*&+Q&C-f~;#Y6Yv7MutBhT+U z^W0TcYF~ljCzM>b#i=)B8xU(yeP6dBK*tAlD{nWP_&gVtE}MugT1dBps>{TPN;dJr4c}1k7!?3Y^ zKBReJlfrAyFb>7yo&OhR>o)(oFsf5DAAO@InU8x!Hh@{gt6dj{-=Y{*L8L;^o1$ zTAFbI*<7Knm#Xi`fxkT1fA9YD3b^1(nZiKdEIuKMQxDhDy2?vxX)!Tfs2SyVs}#EQK$TV-ROJ?t@3GMjkO})8)+Lh32*mGG>Ze}Wp{|X$JN^9pmUCZ< zZa9C3Y5yBW)<3XqnBxw7PB`0=pOs3KHQ8qrK01|DGeitRIIJ6OzhsSOaV5$)g2Mny zg|cnv|G>v#9hUgIq54;O9qv$@qWYF~&;jH|Dx6rnT(3nF_)GM5ZyKJ6&%Ybp0d7X$ zzV*Z&ij&Of=O!yr$_ByRl#~>`xB%n-n&p&2KAJd%K#&&SZ9s+LKg3m$-_-eKb9=72 zN9o)XYS+EyEASsZPYLu!iaDAEwAs-}laKN-(wif4qWM+nJc%PXP}+dh@Hq&lS?jy7 zZ}%?jSP3m|Yk>+NXa)2>^vQo6{I#gRveTb2|DRhHKrdGPXS!kbW^ZUyU(rbxt~V6| OE#z=`VAB_;zWFz_;LFee literal 0 HcmV?d00001 diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index e15b14d96..aa3ac1069 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -63,6 +63,11 @@ body.dragging, body.dragging * { &.square { border-radius: 3px; } + &.cover { + height: 192px; + width: 120px; + border-radius: 3px; + } } // System wide notifications diff --git a/resources/views/books/create.blade.php b/resources/views/books/create.blade.php index 36c94af62..4d1edf78b 100644 --- a/resources/views/books/create.blade.php +++ b/resources/views/books/create.blade.php @@ -8,5 +8,6 @@ @include('books/form')
- +


+ @include('components.image-manager', ['imageType' => 'cover']) @stop \ No newline at end of file diff --git a/resources/views/books/edit.blade.php b/resources/views/books/edit.blade.php index 02768b301..322f3d700 100644 --- a/resources/views/books/edit.blade.php +++ b/resources/views/books/edit.blade.php @@ -14,10 +14,10 @@

{{ trans('entities.books_edit') }}

-
+ @include('books/form', ['model' => $book])
- +@include('components.image-manager', ['imageType' => 'cover']) @stop \ No newline at end of file diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index afa6c48ea..4cc5d2ff3 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -9,11 +9,21 @@ @include('form/textarea', ['name' => 'description'])
+
+ +

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

-
- - -
+ @include('components.image-picker', [ + 'resizeHeight' => '192', + 'resizeWidth' => '120', + 'showRemove' => true, + 'defaultImage' => baseUrl('/default.png'), + 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') , + 'currentId' => @isset($model) ? $model->image : 0, + 'name' => 'image', + 'imageClass' => 'avatar cover' + ]) +
{{ trans('common.cancel') }} diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php index 095cccb24..d11a66eac 100644 --- a/resources/views/books/grid-item.blade.php +++ b/resources/views/books/grid-item.blade.php @@ -1,15 +1,15 @@
-

- {{$book->name}} -
- image === NULL) src="{{baseUrl('/default.jpg')}}" @else src="{{$book->image}}" @endif alt="{{$book->name}}"> -
-

- @if(isset($book->searchSnippet)) -

{!! $book->searchSnippet !!}

- @else +

+ {{$book->name}} +
+ {{$book->name}} +
+

+ @if(isset($book->searchSnippet)) +

{!! $book->searchSnippet !!}

+ @else

{{ $book->getExcerpt() }}

- @endif -
+ @endif +
\ No newline at end of file From d84315fff80a445b99d0d24c767c04a141715a5a Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Fri, 7 Jul 2017 17:06:08 +0530 Subject: [PATCH 19/89] Indentation correction. --- app/Book.php | 4 ++-- resources/views/books/form.blade.php | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/Book.php b/app/Book.php index a489acf8b..b4cafd65b 100644 --- a/app/Book.php +++ b/app/Book.php @@ -18,7 +18,7 @@ class Book extends Entity return baseUrl('/books/' . urlencode($this->slug)); } -public function getBookCover($size = 120) + public function getBookCover($size = 120) { $default = baseUrl('/default.png'); $image = $this->image; @@ -32,7 +32,7 @@ public function getBookCover($size = 120) return $cover; } -public function cover() + public function cover() { return $this->belongsTo(Image::class, 'image'); } diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index 4cc5d2ff3..34f5fd842 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -10,20 +10,20 @@ @include('form/textarea', ['name' => 'description'])
- -

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

+ +

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

- @include('components.image-picker', [ - 'resizeHeight' => '192', - 'resizeWidth' => '120', - 'showRemove' => true, - 'defaultImage' => baseUrl('/default.png'), - 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') , - 'currentId' => @isset($model) ? $model->image : 0, - 'name' => 'image', - 'imageClass' => 'avatar cover' - ]) -
+ @include('components.image-picker', [ + 'resizeHeight' => '192', + 'resizeWidth' => '120', + 'showRemove' => true, + 'defaultImage' => baseUrl('/default.png'), + 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') , + 'currentId' => @isset($model) ? $model->image : 0, + 'name' => 'image', + 'imageClass' => 'avatar cover' + ]) +
{{ trans('common.cancel') }} From 3fd61a3600f541da406dbde9516fb97c006f0068 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Fri, 7 Jul 2017 17:28:34 +0530 Subject: [PATCH 20/89] Revert "Bookstack grid view." --- app/Book.php | 20 +-------- app/Http/Controllers/BookController.php | 10 ++--- app/User.php | 2 +- ...7_07_05_102650_add_cover_image_display.php | 40 ------------------ public/default.png | Bin 3338 -> 0 bytes resources/assets/js/global.js | 7 --- resources/assets/sass/styles.scss | 29 +------------ resources/lang/de/common.php | 3 +- resources/lang/de/settings.php | 1 - resources/lang/en/common.php | 2 - resources/lang/en/settings.php | 1 - resources/lang/es/common.php | 3 +- resources/lang/es/settings.php | 1 - resources/lang/fr/common.php | 3 +- resources/lang/fr/settings.php | 1 - resources/lang/nl/common.php | 3 +- resources/lang/nl/settings.php | 1 - resources/lang/pt_BR/common.php | 3 +- resources/lang/pt_BR/settings.php | 1 - resources/lang/sk/common.php | 3 +- resources/lang/sk/settings.php | 1 - resources/views/books/create.blade.php | 5 +-- resources/views/books/edit.blade.php | 2 +- resources/views/books/form.blade.php | 14 ------ resources/views/books/grid-item.blade.php | 15 ------- resources/views/books/index.blade.php | 30 +++++-------- resources/views/users/edit.blade.php | 7 --- 27 files changed, 29 insertions(+), 179 deletions(-) delete mode 100644 database/migrations/2017_07_05_102650_add_cover_image_display.php delete mode 100644 public/default.png delete mode 100644 resources/views/books/grid-item.blade.php diff --git a/app/Book.php b/app/Book.php index b4cafd65b..06c00945d 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']; /** * Get the url for this book. @@ -18,24 +18,6 @@ class Book extends Entity return baseUrl('/books/' . urlencode($this->slug)); } - public function getBookCover($size = 120) - { - $default = baseUrl('/default.png'); - $image = $this->image; - if ($image === 0 || $image === '0' || $image === null) - return $default; - try { - $cover = $this->cover ? baseUrl($this->cover->getThumb(120, 192, false)) : $default; - } catch (\Exception $err) { - $cover = $default; - } - return $cover; - } - - public function cover() - { - return $this->belongsTo(Image::class, 'image'); - } /* * Get the edit url for this book. * @return string diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index eecb7839f..4313a4e20 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -39,9 +39,9 @@ class BookController extends Controller $books = $this->entityRepo->getAllPaginated('book', 16); $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false; $popular = $this->entityRepo->getPopular('book', 3, 0); - $books_display = $this->currentUser->books_display; + $display = $this->currentUser->display; $this->setPageTitle('Books'); - return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'books_display' => $books_display] ); + return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display } /** @@ -115,9 +115,9 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); - Activity::add($book, 'book_update', $book->id); - return redirect($book->getUrl()); + $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); + Activity::add($book, 'book_update', $book->id); + return redirect($book->getUrl()); } /** diff --git a/app/User.php b/app/User.php index 703322cbd..8033557e4 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']; /** * The attributes excluded from the model's JSON form. diff --git a/database/migrations/2017_07_05_102650_add_cover_image_display.php b/database/migrations/2017_07_05_102650_add_cover_image_display.php deleted file mode 100644 index 396112744..000000000 --- a/database/migrations/2017_07_05_102650_add_cover_image_display.php +++ /dev/null @@ -1,40 +0,0 @@ -string('books_display',10)->default('grid'); - }); - - Schema::table('books', function (Blueprint $table) { - $table->integer('image'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn('books_display'); - }); - - Schema::table('books', function (Blueprint $table) { - $table->dropColumn('image'); - }); - } -} diff --git a/public/default.png b/public/default.png deleted file mode 100644 index 1d7b737e7da36a919d9d389cbd980938cfae2435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3338 zcmd^BZCH|5AHS`o+j_B7&kS+FV!s8$aTJwEKV8HQ<(&?c) z7i3cQ!&kbY*6qhOrP-!c`Rv$r5JL$)W@B^w8K2qM=mOfV4~mKo*&M4V?zkllT*ZCa zdt$p^_#8nxJx@s1hKVpA3H$p|p`qdCxluv6lf~kdC4oCY{T{R)`g|Gw-!l07cKQ?1 z|LB(L*JP^Hav*zaRaMoD$*7}H-Yn$yX>|22#VKUZ>%ye_>Gs@s&2x=65fyVi;`(?+ zE@Dm(IkPZ$G%Rz9x@ZMz--^oNm zBn)gWIqcx**qIMEZ%ZCBd2t}y6x<H$TG0I=<~(&93C;n0)>0PLa#O zJ$Aj5bJ1>_XJ*HRu8~Ss`skZCE>^dVL{K0GqkH8=&n+Fjy}d^-gJR#faU-z9>|uD8 zy%l7v&#UJ_%Rxj1i^*VAhtp@K27d7qFwl57Q9z|-`T_rx)^gjYSZC}u~om$ zlhj$Wbji_Q%$T74wLMMKIt9*7&Lav1sV3*loSe-YHss~yMc5n$3nnKg^&>oq@-aBO za`3T2fjJo;->KDVQ6BEK+CJJShm@C-lf$~#&BxfEKe4@4m!T4;7T{fQ8nzg=vMUrl+l9Z!Mxu0H}asU)! zowfCx?p8n^x}s|bR%lQTC!5bpwc}YIixpnr8Cr|>)l1}|c4PP-m#iDP@(cpWTG1Ew6lAwnmC_Ex#XGJajXT9*j(vb)NF1v|!~EkEzFB=<^)`cP$G8 z;HQw{4!vIAJ>ar-=+2!xu#A-E7`G}R5E@7kpiHogML0pi;cT4X`7eAL!Q^SrErD^8 zy;PCrfbdfgrqj(m^nt^93!{&`j6l>gT9vF#6&1CdYPe!oMF>!~OeWLsK*}#rWo)kk zaR~J^P{=Gvqb^aYRQW4%B#!;Re{HCtP&9JB0Kmj+M#hO5;8386S0cP=$AH!fzE;=Yyk5*UB|TA9FmH}r_z}^z!}H4nB>gil%4G6 z9~J_xlb&CMm35uDDo;4^sRo{fH2azG5*Ztp9go1U6U0AS+#(LdsGj1wCz0a|6=Qc1^HbdXmrM>S0t*()Vwn+DC^U(y5cxVcK+hK8L6w<5c%EAMF)`4 zOTW1ZE5GeflcLQr*8VZi$rD7um{P*5XE1<#CGZD?Cjgwq5x-xXlxJnyc=VI|`vDe0 z`Wdzr%Wat&EEa2)NHAQ$GX_nA8#W~HNyG1&fh7VzO=~-cU;)Wibe$QGH?iNxA->Fx zEWomZdBU`5_XOG6hlV>be7OicuimTZ%>d@0>`K60{fNh&pN5im<2Bnja`G@YLwA#9lwzi;c*&+Q&C-f~;#Y6Yv7MutBhT+U z^W0TcYF~ljCzM>b#i=)B8xU(yeP6dBK*tAlD{nWP_&gVtE}MugT1dBps>{TPN;dJr4c}1k7!?3Y^ zKBReJlfrAyFb>7yo&OhR>o)(oFsf5DAAO@InU8x!Hh@{gt6dj{-=Y{*L8L;^o1$ zTAFbI*<7Knm#Xi`fxkT1fA9YD3b^1(nZiKdEIuKMQxDhDy2?vxX)!Tfs2SyVs}#EQK$TV-ROJ?t@3GMjkO})8)+Lh32*mGG>Ze}Wp{|X$JN^9pmUCZ< zZa9C3Y5yBW)<3XqnBxw7PB`0=pOs3KHQ8qrK01|DGeitRIIJ6OzhsSOaV5$)g2Mny zg|cnv|G>v#9hUgIq54;O9qv$@qWYF~&;jH|Dx6rnT(3nF_)GM5ZyKJ6&%Ybp0d7X$ zzV*Z&ij&Of=O!yr$_ByRl#~>`xB%n-n&p&2KAJd%K#&&SZ9s+LKg3m$-_-eKb9=72 zN9o)XYS+EyEASsZPYLu!iaDAEwAs-}laKN-(wif4qWM+nJc%PXP}+dh@Hq&lS?jy7 zZ}%?jSP3m|Yk>+NXa)2>^vQo6{I#gRveTb2|DRhHKrdGPXS!kbW^ZUyU(rbxt~V6| OE#z=`VAB_;zWFz_;LFee diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index 3a288f791..dc6802e12 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -153,13 +153,6 @@ $('[data-action="expand-entity-list-details"]').click(function() { $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240); }); -// Toggle thumbnails -$(document).ready(function(){ - $('[data-action="expand-thumbnail"]').click(function(){ - $('.galleryItem').toggleClass("collapse").find('img').slideToggle(50); - }); -}); - // Popup close $('.popup-close').click(function() { $(this).closest('.overlay').fadeOut(240); diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index aa3ac1069..afb9d531b 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -63,11 +63,6 @@ body.dragging, body.dragging * { &.square { border-radius: 3px; } - &.cover { - height: 192px; - width: 120px; - border-radius: 3px; - } } // System wide notifications @@ -279,25 +274,5 @@ $btt-size: 40px; } } -.galleryItem { - margin-bottom: 32px; - height: 330px; - overflow: hidden; - border: 1px solid #9e9e9e; - h3 { - font-size: 1.2em; - text-align: center; - } - p { - font-size: 0.8em; - text-align: center; - } - img { - height: 192px; - width: 120px; - margin-top: 5%; - } - &.collapse { - height: 130px; - } -} + + diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index c3ee51abb..7ad1743a0 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -17,7 +17,6 @@ return [ 'name' => 'Name', 'description' => 'Beschreibung', 'role' => 'Rolle', - 'cover_image' => 'Titelbild', /** * Actions @@ -44,7 +43,7 @@ return [ 'no_items' => 'Keine Einträge gefunden.', 'back_to_top' => 'nach oben', 'toggle_details' => 'Details zeigen/verstecken', - 'toggle_thumbnails' => 'Thumbnails zeigen/verstecken', + /** * Header */ diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 21d65321f..668eecf33 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -91,7 +91,6 @@ return [ 'users_external_auth_id' => 'Externe Authentifizierungs-ID', 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:', 'users_system_public' => 'Dieser Benutzer repräsentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', - 'users_books_display_type' => 'Wählen Sie die Art der Ansicht aus', 'users_delete' => 'Benutzer löschen', 'users_delete_named' => 'Benutzer :userName löschen', 'users_delete_warning' => 'Sie möchten den Benutzer \':userName\' gänzlich aus dem System löschen.', diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index c05cfa56c..e1d74c95e 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -17,7 +17,6 @@ return [ 'name' => 'Name', 'description' => 'Description', 'role' => 'Role', - 'cover_image' => 'Cover image', /** * Actions @@ -45,7 +44,6 @@ return [ 'no_items' => 'No items available', 'back_to_top' => 'Back to top', 'toggle_details' => 'Toggle Details', - 'toggle_thumbnails' => 'Toggle Thumbnails', /** * Header diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index e95bf35a3..31163e87e 100644 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -91,7 +91,6 @@ 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' => 'Select the type of view', '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/common.php b/resources/lang/es/common.php index 9a8fafc95..3a62a2177 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nombre', 'description' => 'Descripción', 'role' => 'Rol', - 'cover_image' => 'Imagen de portada', + /** * Actions */ @@ -43,7 +43,6 @@ return [ 'no_items' => 'No hay items disponibles', 'back_to_top' => 'Volver arriba', 'toggle_details' => 'Alternar detalles', - 'toggle_thumbnails' => 'Alternar miniaturas', /** * Header diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index 90bb0db2c..cd6a8b8d9 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -91,7 +91,6 @@ 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' => 'Seleccione el tipo de vista', '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/common.php b/resources/lang/fr/common.php index fe8bb761a..5eb4b8fa8 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nom', 'description' => 'Description', 'role' => 'Rôle', - 'cover_image' => 'Image de couverture', + /** * Actions */ @@ -43,7 +43,6 @@ return [ 'no_items' => 'Aucun élément', 'back_to_top' => 'Retour en haut', 'toggle_details' => 'Afficher les détails', - 'toggle_thumbnails' => 'Afficher les vignettes', /** * Header diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 288c56d5a..8a3756527 100644 --- a/resources/lang/fr/settings.php +++ b/resources/lang/fr/settings.php @@ -91,7 +91,6 @@ 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' => 'Sélectionnez le type de vue', '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/common.php b/resources/lang/nl/common.php index a096c1d22..bdde9eb95 100644 --- a/resources/lang/nl/common.php +++ b/resources/lang/nl/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Naam', 'description' => 'Beschrijving', 'role' => 'Rol', - 'cover_image' => 'Omslagfoto', + /** * Actions */ @@ -43,7 +43,6 @@ return [ 'no_items' => 'Geen items beschikbaar', 'back_to_top' => 'Terug naar boven', 'toggle_details' => 'Details Weergeven', - 'toggle_thumbnails' => 'Thumbnails Weergeven', /** * Header diff --git a/resources/lang/nl/settings.php b/resources/lang/nl/settings.php index 7b2f94530..7408a2dc3 100644 --- a/resources/lang/nl/settings.php +++ b/resources/lang/nl/settings.php @@ -91,7 +91,6 @@ 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' => 'Selecteer het type weergave', '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/common.php b/resources/lang/pt_BR/common.php index eba301929..820ba219c 100644 --- a/resources/lang/pt_BR/common.php +++ b/resources/lang/pt_BR/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nome', 'description' => 'Descrição', 'role' => 'Regra', - 'cover_image' => 'Imagem de capa', + /** * Actions */ @@ -43,7 +43,6 @@ return [ 'no_items' => 'Nenhum item disponível', 'back_to_top' => 'Voltar ao topo', 'toggle_details' => 'Alternar Detalhes', - 'toggle_thumbnails' => 'Alternar Miniaturas', /** * Header diff --git a/resources/lang/pt_BR/settings.php b/resources/lang/pt_BR/settings.php index b46eda8df..b8d062b5f 100644 --- a/resources/lang/pt_BR/settings.php +++ b/resources/lang/pt_BR/settings.php @@ -91,7 +91,6 @@ 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' => 'Selecione o tipo de exibição', '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/common.php b/resources/lang/sk/common.php index 19ba665b5..100981597 100644 --- a/resources/lang/sk/common.php +++ b/resources/lang/sk/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Meno', 'description' => 'Popis', 'role' => 'Rola', - 'cover_image' => 'Obal knihy', + /** * Actions */ @@ -43,7 +43,6 @@ return [ 'no_items' => 'Žiadne položky nie sú dostupné', 'back_to_top' => 'Späť nahor', 'toggle_details' => 'Prepnúť detaily', - 'toggle_thumbnails' => 'Prepnúť náhľady', /** * Header diff --git a/resources/lang/sk/settings.php b/resources/lang/sk/settings.php index 1c745fcf8..643b4b8ff 100644 --- a/resources/lang/sk/settings.php +++ b/resources/lang/sk/settings.php @@ -91,7 +91,6 @@ 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' => 'Vyberte typ zobrazenia', '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/create.blade.php b/resources/views/books/create.blade.php index 4d1edf78b..2c629e699 100644 --- a/resources/views/books/create.blade.php +++ b/resources/views/books/create.blade.php @@ -4,10 +4,9 @@

{{ trans('entities.books_create') }}

-
+ @include('books/form')
-


- @include('components.image-manager', ['imageType' => 'cover']) + @stop \ No newline at end of file diff --git a/resources/views/books/edit.blade.php b/resources/views/books/edit.blade.php index 322f3d700..2419b68da 100644 --- a/resources/views/books/edit.blade.php +++ b/resources/views/books/edit.blade.php @@ -19,5 +19,5 @@ @include('books/form', ['model' => $book])
-@include('components.image-manager', ['imageType' => 'cover']) + @stop \ No newline at end of file diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index 34f5fd842..b1484d129 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -9,21 +9,7 @@ @include('form/textarea', ['name' => 'description'])
-
- -

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

- @include('components.image-picker', [ - 'resizeHeight' => '192', - 'resizeWidth' => '120', - 'showRemove' => true, - 'defaultImage' => baseUrl('/default.png'), - 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') , - 'currentId' => @isset($model) ? $model->image : 0, - 'name' => 'image', - 'imageClass' => 'avatar cover' - ]) -
{{ trans('common.cancel') }} diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php deleted file mode 100644 index d11a66eac..000000000 --- a/resources/views/books/grid-item.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -
-
-

- {{$book->name}} -
- {{$book->name}} -
-

- @if(isset($book->searchSnippet)) -

{!! $book->searchSnippet !!}

- @else -

{{ $book->getExcerpt() }}

- @endif -
-
\ No newline at end of file diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index c5dd38a87..c090a127e 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -5,13 +5,13 @@
-
-
- {{ trans('common.toggle_thumbnails') }} +
+
+
@if($currentUser->can('book-create-all')) {{ trans('entities.books_create') }} @endif -
+
@@ -20,22 +20,14 @@
-
+

{{ trans('entities.books') }}

@if(count($books) > 0) - @if($books_display=='grid') - @foreach($books as $book) - @include('books/grid-item', ['book' => $book]) - @endforeach -
- {!! $books->render() !!} -
- @else - @foreach($books as $book) - @include('books/list-item', ['book' => $book]) - @endforeach - {!! $books->render() !!} - @endif + @foreach($books as $book) + @include('books/list-item', ['book' => $book]) +
+ @endforeach + {!! $books->render() !!} @else

{{ trans('entities.books_empty') }}

@if(userCan('books-create-all')) @@ -43,7 +35,7 @@ @endif @endif
-
+
@if($recents)
 
diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index c15e34974..ff3475194 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -49,13 +49,6 @@ @endforeach
-
- - -
From 844976c85bd9816b5427090b732eda5d32227c47 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Wed, 12 Jul 2017 11:40:50 +0530 Subject: [PATCH 21/89] Revert "Revert "Bookstack grid view."" --- app/Book.php | 20 ++++++++- app/Http/Controllers/BookController.php | 10 ++--- app/User.php | 2 +- ...7_07_05_102650_add_cover_image_display.php | 40 ++++++++++++++++++ public/default.png | Bin 0 -> 3338 bytes resources/assets/js/global.js | 7 +++ resources/assets/sass/styles.scss | 29 ++++++++++++- resources/lang/de/common.php | 3 +- resources/lang/de/settings.php | 1 + resources/lang/en/common.php | 2 + resources/lang/en/settings.php | 1 + resources/lang/es/common.php | 3 +- resources/lang/es/settings.php | 1 + resources/lang/fr/common.php | 3 +- resources/lang/fr/settings.php | 1 + resources/lang/nl/common.php | 3 +- resources/lang/nl/settings.php | 1 + resources/lang/pt_BR/common.php | 3 +- resources/lang/pt_BR/settings.php | 1 + resources/lang/sk/common.php | 3 +- resources/lang/sk/settings.php | 1 + resources/views/books/create.blade.php | 5 ++- resources/views/books/edit.blade.php | 2 +- resources/views/books/form.blade.php | 14 ++++++ resources/views/books/grid-item.blade.php | 15 +++++++ resources/views/books/index.blade.php | 30 ++++++++----- resources/views/users/edit.blade.php | 7 +++ 27 files changed, 179 insertions(+), 29 deletions(-) create mode 100644 database/migrations/2017_07_05_102650_add_cover_image_display.php create mode 100644 public/default.png create mode 100644 resources/views/books/grid-item.blade.php diff --git a/app/Book.php b/app/Book.php index 06c00945d..b4cafd65b 100644 --- a/app/Book.php +++ b/app/Book.php @@ -3,7 +3,7 @@ class Book extends Entity { - protected $fillable = ['name', 'description']; + protected $fillable = ['name', 'description', 'image']; /** * Get the url for this book. @@ -18,6 +18,24 @@ class Book extends Entity return baseUrl('/books/' . urlencode($this->slug)); } + public function getBookCover($size = 120) + { + $default = baseUrl('/default.png'); + $image = $this->image; + if ($image === 0 || $image === '0' || $image === null) + return $default; + try { + $cover = $this->cover ? baseUrl($this->cover->getThumb(120, 192, false)) : $default; + } catch (\Exception $err) { + $cover = $default; + } + return $cover; + } + + public function cover() + { + return $this->belongsTo(Image::class, 'image'); + } /* * Get the edit url for this book. * @return string diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 4313a4e20..eecb7839f 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -39,9 +39,9 @@ class BookController extends Controller $books = $this->entityRepo->getAllPaginated('book', 16); $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false; $popular = $this->entityRepo->getPopular('book', 3, 0); - $display = $this->currentUser->display; + $books_display = $this->currentUser->books_display; $this->setPageTitle('Books'); - return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'display' => $display]); //added displaly to access user display + return view('books/index', ['books' => $books, 'recents' => $recents, 'popular' => $popular, 'books_display' => $books_display] ); } /** @@ -115,9 +115,9 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); - Activity::add($book, 'book_update', $book->id); - return redirect($book->getUrl()); + $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); + Activity::add($book, 'book_update', $book->id); + return redirect($book->getUrl()); } /** diff --git a/app/User.php b/app/User.php index 8033557e4..703322cbd 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']; + protected $fillable = ['name', 'email', 'image_id', 'books_display' ]; /** * The attributes excluded from the model's JSON form. diff --git a/database/migrations/2017_07_05_102650_add_cover_image_display.php b/database/migrations/2017_07_05_102650_add_cover_image_display.php new file mode 100644 index 000000000..396112744 --- /dev/null +++ b/database/migrations/2017_07_05_102650_add_cover_image_display.php @@ -0,0 +1,40 @@ +string('books_display',10)->default('grid'); + }); + + Schema::table('books', function (Blueprint $table) { + $table->integer('image'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('books_display'); + }); + + Schema::table('books', function (Blueprint $table) { + $table->dropColumn('image'); + }); + } +} diff --git a/public/default.png b/public/default.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7b737e7da36a919d9d389cbd980938cfae2435 GIT binary patch literal 3338 zcmd^BZCH|5AHS`o+j_B7&kS+FV!s8$aTJwEKV8HQ<(&?c) z7i3cQ!&kbY*6qhOrP-!c`Rv$r5JL$)W@B^w8K2qM=mOfV4~mKo*&M4V?zkllT*ZCa zdt$p^_#8nxJx@s1hKVpA3H$p|p`qdCxluv6lf~kdC4oCY{T{R)`g|Gw-!l07cKQ?1 z|LB(L*JP^Hav*zaRaMoD$*7}H-Yn$yX>|22#VKUZ>%ye_>Gs@s&2x=65fyVi;`(?+ zE@Dm(IkPZ$G%Rz9x@ZMz--^oNm zBn)gWIqcx**qIMEZ%ZCBd2t}y6x<H$TG0I=<~(&93C;n0)>0PLa#O zJ$Aj5bJ1>_XJ*HRu8~Ss`skZCE>^dVL{K0GqkH8=&n+Fjy}d^-gJR#faU-z9>|uD8 zy%l7v&#UJ_%Rxj1i^*VAhtp@K27d7qFwl57Q9z|-`T_rx)^gjYSZC}u~om$ zlhj$Wbji_Q%$T74wLMMKIt9*7&Lav1sV3*loSe-YHss~yMc5n$3nnKg^&>oq@-aBO za`3T2fjJo;->KDVQ6BEK+CJJShm@C-lf$~#&BxfEKe4@4m!T4;7T{fQ8nzg=vMUrl+l9Z!Mxu0H}asU)! zowfCx?p8n^x}s|bR%lQTC!5bpwc}YIixpnr8Cr|>)l1}|c4PP-m#iDP@(cpWTG1Ew6lAwnmC_Ex#XGJajXT9*j(vb)NF1v|!~EkEzFB=<^)`cP$G8 z;HQw{4!vIAJ>ar-=+2!xu#A-E7`G}R5E@7kpiHogML0pi;cT4X`7eAL!Q^SrErD^8 zy;PCrfbdfgrqj(m^nt^93!{&`j6l>gT9vF#6&1CdYPe!oMF>!~OeWLsK*}#rWo)kk zaR~J^P{=Gvqb^aYRQW4%B#!;Re{HCtP&9JB0Kmj+M#hO5;8386S0cP=$AH!fzE;=Yyk5*UB|TA9FmH}r_z}^z!}H4nB>gil%4G6 z9~J_xlb&CMm35uDDo;4^sRo{fH2azG5*Ztp9go1U6U0AS+#(LdsGj1wCz0a|6=Qc1^HbdXmrM>S0t*()Vwn+DC^U(y5cxVcK+hK8L6w<5c%EAMF)`4 zOTW1ZE5GeflcLQr*8VZi$rD7um{P*5XE1<#CGZD?Cjgwq5x-xXlxJnyc=VI|`vDe0 z`Wdzr%Wat&EEa2)NHAQ$GX_nA8#W~HNyG1&fh7VzO=~-cU;)Wibe$QGH?iNxA->Fx zEWomZdBU`5_XOG6hlV>be7OicuimTZ%>d@0>`K60{fNh&pN5im<2Bnja`G@YLwA#9lwzi;c*&+Q&C-f~;#Y6Yv7MutBhT+U z^W0TcYF~ljCzM>b#i=)B8xU(yeP6dBK*tAlD{nWP_&gVtE}MugT1dBps>{TPN;dJr4c}1k7!?3Y^ zKBReJlfrAyFb>7yo&OhR>o)(oFsf5DAAO@InU8x!Hh@{gt6dj{-=Y{*L8L;^o1$ zTAFbI*<7Knm#Xi`fxkT1fA9YD3b^1(nZiKdEIuKMQxDhDy2?vxX)!Tfs2SyVs}#EQK$TV-ROJ?t@3GMjkO})8)+Lh32*mGG>Ze}Wp{|X$JN^9pmUCZ< zZa9C3Y5yBW)<3XqnBxw7PB`0=pOs3KHQ8qrK01|DGeitRIIJ6OzhsSOaV5$)g2Mny zg|cnv|G>v#9hUgIq54;O9qv$@qWYF~&;jH|Dx6rnT(3nF_)GM5ZyKJ6&%Ybp0d7X$ zzV*Z&ij&Of=O!yr$_ByRl#~>`xB%n-n&p&2KAJd%K#&&SZ9s+LKg3m$-_-eKb9=72 zN9o)XYS+EyEASsZPYLu!iaDAEwAs-}laKN-(wif4qWM+nJc%PXP}+dh@Hq&lS?jy7 zZ}%?jSP3m|Yk>+NXa)2>^vQo6{I#gRveTb2|DRhHKrdGPXS!kbW^ZUyU(rbxt~V6| OE#z=`VAB_;zWFz_;LFee literal 0 HcmV?d00001 diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index 2ef062a5b..bd55777e8 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -154,6 +154,13 @@ $('[data-action="expand-entity-list-details"]').click(function() { $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240); }); +// Toggle thumbnails +$(document).ready(function(){ + $('[data-action="expand-thumbnail"]').click(function(){ + $('.galleryItem').toggleClass("collapse").find('img').slideToggle(50); + }); +}); + // Popup close $('.popup-close').click(function() { $(this).closest('.overlay').fadeOut(240); diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index afb9d531b..aa3ac1069 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -63,6 +63,11 @@ body.dragging, body.dragging * { &.square { border-radius: 3px; } + &.cover { + height: 192px; + width: 120px; + border-radius: 3px; + } } // System wide notifications @@ -274,5 +279,25 @@ $btt-size: 40px; } } - - +.galleryItem { + margin-bottom: 32px; + height: 330px; + overflow: hidden; + border: 1px solid #9e9e9e; + h3 { + font-size: 1.2em; + text-align: center; + } + p { + font-size: 0.8em; + text-align: center; + } + img { + height: 192px; + width: 120px; + margin-top: 5%; + } + &.collapse { + height: 130px; + } +} diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index 7ad1743a0..c3ee51abb 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -17,6 +17,7 @@ return [ 'name' => 'Name', 'description' => 'Beschreibung', 'role' => 'Rolle', + 'cover_image' => 'Titelbild', /** * Actions @@ -43,7 +44,7 @@ return [ 'no_items' => 'Keine Einträge gefunden.', 'back_to_top' => 'nach oben', 'toggle_details' => 'Details zeigen/verstecken', - + 'toggle_thumbnails' => 'Thumbnails zeigen/verstecken', /** * Header */ diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 668eecf33..21d65321f 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -91,6 +91,7 @@ return [ 'users_external_auth_id' => 'Externe Authentifizierungs-ID', 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:', 'users_system_public' => 'Dieser Benutzer repräsentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', + 'users_books_display_type' => 'Wählen Sie die Art der Ansicht aus', 'users_delete' => 'Benutzer löschen', 'users_delete_named' => 'Benutzer :userName löschen', 'users_delete_warning' => 'Sie möchten den Benutzer \':userName\' gänzlich aus dem System löschen.', diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index e1d74c95e..c05cfa56c 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -17,6 +17,7 @@ return [ 'name' => 'Name', 'description' => 'Description', 'role' => 'Role', + 'cover_image' => 'Cover image', /** * Actions @@ -44,6 +45,7 @@ return [ 'no_items' => 'No items available', 'back_to_top' => 'Back to top', 'toggle_details' => 'Toggle Details', + 'toggle_thumbnails' => 'Toggle Thumbnails', /** * Header diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index 4529b1978..732b64c42 100644 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -91,6 +91,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' => 'Select the type of view', '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/common.php b/resources/lang/es/common.php index 3a62a2177..9a8fafc95 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nombre', 'description' => 'Descripción', 'role' => 'Rol', - + 'cover_image' => 'Imagen de portada', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'No hay items disponibles', 'back_to_top' => 'Volver arriba', 'toggle_details' => 'Alternar detalles', + 'toggle_thumbnails' => 'Alternar miniaturas', /** * Header diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index cd6a8b8d9..90bb0db2c 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -91,6 +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' => 'Seleccione el tipo de vista', '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/common.php b/resources/lang/fr/common.php index 5eb4b8fa8..fe8bb761a 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nom', 'description' => 'Description', 'role' => 'Rôle', - + 'cover_image' => 'Image de couverture', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Aucun élément', 'back_to_top' => 'Retour en haut', 'toggle_details' => 'Afficher les détails', + 'toggle_thumbnails' => 'Afficher les vignettes', /** * Header diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 8a3756527..288c56d5a 100644 --- a/resources/lang/fr/settings.php +++ b/resources/lang/fr/settings.php @@ -91,6 +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' => 'Sélectionnez le type de vue', '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/common.php b/resources/lang/nl/common.php index bdde9eb95..a096c1d22 100644 --- a/resources/lang/nl/common.php +++ b/resources/lang/nl/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Naam', 'description' => 'Beschrijving', 'role' => 'Rol', - + 'cover_image' => 'Omslagfoto', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Geen items beschikbaar', 'back_to_top' => 'Terug naar boven', 'toggle_details' => 'Details Weergeven', + 'toggle_thumbnails' => 'Thumbnails Weergeven', /** * Header diff --git a/resources/lang/nl/settings.php b/resources/lang/nl/settings.php index 7408a2dc3..7b2f94530 100644 --- a/resources/lang/nl/settings.php +++ b/resources/lang/nl/settings.php @@ -91,6 +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' => 'Selecteer het type weergave', '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/common.php b/resources/lang/pt_BR/common.php index 820ba219c..eba301929 100644 --- a/resources/lang/pt_BR/common.php +++ b/resources/lang/pt_BR/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Nome', 'description' => 'Descrição', 'role' => 'Regra', - + 'cover_image' => 'Imagem de capa', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Nenhum item disponível', 'back_to_top' => 'Voltar ao topo', 'toggle_details' => 'Alternar Detalhes', + 'toggle_thumbnails' => 'Alternar Miniaturas', /** * Header diff --git a/resources/lang/pt_BR/settings.php b/resources/lang/pt_BR/settings.php index b8d062b5f..b46eda8df 100644 --- a/resources/lang/pt_BR/settings.php +++ b/resources/lang/pt_BR/settings.php @@ -91,6 +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' => 'Selecione o tipo de exibição', '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/common.php b/resources/lang/sk/common.php index 100981597..19ba665b5 100644 --- a/resources/lang/sk/common.php +++ b/resources/lang/sk/common.php @@ -17,7 +17,7 @@ return [ 'name' => 'Meno', 'description' => 'Popis', 'role' => 'Rola', - + 'cover_image' => 'Obal knihy', /** * Actions */ @@ -43,6 +43,7 @@ return [ 'no_items' => 'Žiadne položky nie sú dostupné', 'back_to_top' => 'Späť nahor', 'toggle_details' => 'Prepnúť detaily', + 'toggle_thumbnails' => 'Prepnúť náhľady', /** * Header diff --git a/resources/lang/sk/settings.php b/resources/lang/sk/settings.php index 643b4b8ff..1c745fcf8 100644 --- a/resources/lang/sk/settings.php +++ b/resources/lang/sk/settings.php @@ -91,6 +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' => 'Vyberte typ zobrazenia', '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/create.blade.php b/resources/views/books/create.blade.php index 2c629e699..4d1edf78b 100644 --- a/resources/views/books/create.blade.php +++ b/resources/views/books/create.blade.php @@ -4,9 +4,10 @@

{{ trans('entities.books_create') }}

-
+ @include('books/form')
- +


+ @include('components.image-manager', ['imageType' => 'cover']) @stop \ No newline at end of file diff --git a/resources/views/books/edit.blade.php b/resources/views/books/edit.blade.php index 2419b68da..322f3d700 100644 --- a/resources/views/books/edit.blade.php +++ b/resources/views/books/edit.blade.php @@ -19,5 +19,5 @@ @include('books/form', ['model' => $book])
- +@include('components.image-manager', ['imageType' => 'cover']) @stop \ No newline at end of file diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index b1484d129..34f5fd842 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -9,7 +9,21 @@ @include('form/textarea', ['name' => 'description'])
+
+ +

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

+ @include('components.image-picker', [ + 'resizeHeight' => '192', + 'resizeWidth' => '120', + 'showRemove' => true, + 'defaultImage' => baseUrl('/default.png'), + 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') , + 'currentId' => @isset($model) ? $model->image : 0, + 'name' => 'image', + 'imageClass' => 'avatar cover' + ]) +
{{ trans('common.cancel') }} diff --git a/resources/views/books/grid-item.blade.php b/resources/views/books/grid-item.blade.php new file mode 100644 index 000000000..d11a66eac --- /dev/null +++ b/resources/views/books/grid-item.blade.php @@ -0,0 +1,15 @@ +
+
+

+ {{$book->name}} +
+ {{$book->name}} +
+

+ @if(isset($book->searchSnippet)) +

{!! $book->searchSnippet !!}

+ @else +

{{ $book->getExcerpt() }}

+ @endif +
+
\ No newline at end of file diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index c090a127e..c5dd38a87 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -5,13 +5,13 @@
-
-
-
+
+
+ {{ trans('common.toggle_thumbnails') }} @if($currentUser->can('book-create-all')) {{ trans('entities.books_create') }} @endif -
+
@@ -20,14 +20,22 @@
-
+

{{ trans('entities.books') }}

@if(count($books) > 0) - @foreach($books as $book) - @include('books/list-item', ['book' => $book]) -
- @endforeach - {!! $books->render() !!} + @if($books_display=='grid') + @foreach($books as $book) + @include('books/grid-item', ['book' => $book]) + @endforeach +
+ {!! $books->render() !!} +
+ @else + @foreach($books as $book) + @include('books/list-item', ['book' => $book]) + @endforeach + {!! $books->render() !!} + @endif @else

{{ trans('entities.books_empty') }}

@if(userCan('books-create-all')) @@ -35,7 +43,7 @@ @endif @endif
-
+
@if($recents)
 
diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index ff3475194..c15e34974 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -49,6 +49,13 @@ @endforeach
+
+ + +
From 7a724f913431cc8d200ce7b1d054f523ea148650 Mon Sep 17 00:00:00 2001 From: Nilesh Deepak Date: Wed, 12 Jul 2017 13:44:37 +0530 Subject: [PATCH 22/89] Updated modifications. --- public/default.png | Bin 3338 -> 1116 bytes resources/assets/js/global.js | 4 ++-- resources/assets/sass/styles.scss | 17 +++++++++-------- resources/lang/de/common.php | 1 + resources/lang/de/settings.php | 2 +- resources/lang/en/common.php | 2 +- resources/lang/en/settings.php | 2 +- resources/lang/es/common.php | 1 + resources/lang/es/settings.php | 2 +- resources/lang/fr/common.php | 1 + resources/lang/fr/settings.php | 2 +- resources/lang/nl/common.php | 1 + resources/lang/nl/settings.php | 2 +- resources/lang/pt_BR/common.php | 1 + resources/lang/pt_BR/settings.php | 2 +- resources/lang/sk/common.php | 1 + resources/lang/sk/settings.php | 2 +- resources/views/books/grid-item.blade.php | 12 ++++++++---- .../views/components/image-picker.blade.php | 2 +- 19 files changed, 34 insertions(+), 23 deletions(-) diff --git a/public/default.png b/public/default.png index 1d7b737e7da36a919d9d389cbd980938cfae2435..3b04154027b359a3f9521c1ad01f56a442d5319b 100644 GIT binary patch literal 1116 zcmeAS@N?(olHy`uVBq!ia0vp^6+nD|14uBun)X8sNU@|l`Z_W&Z0zU$lgJ9>DVb-_yl0q~g}wE1AKMJS5mZ z{QNin(5+2b{OJudxDzc{3N6Z>NVvMhP7E$)+&Q`JOIcHxuchkeyt4Q|zg^WUf4%&( z>+;-x4*wT_Vl+rN(7?#d#v?(9@n8Sp3Awxa+utvXe!ZhC?BeVl*7cXwub7{FT{8b_ zquk#Q%eH@b@AN`SFun3Y9s%L=UUM7Hq)2? zW_%B_VmEcl-2aKIefP= z8XIlrc5cxvZkBzsfn`^Ydf+Oqt(Vj`aq#9W%9eihb5#!eDJ`W-0i{AWLiX4eDD2~j zIbVC`&dkc%;GOZQ{Y9^r*C?BIJv=76{K$q$e=BU1t~$r{UcN2bd)?!y{H>qW3PsZc zcdtLSdf9>VW=zMQuh}W1_hWJJ_u3nekDV-yUL9Fm7rDd4Vr}KNb=%VGZEa?A?payS zw@%w}XJV=A>e@vuIdi^pU!ZiJhyK@Pcogdd`tYi6W;Ik%-(%t_c6l_TU*n;HZ2ZSyQ*H~9=fK}Coa+I@u&2* z6~XcI_8#c{Q@Ve8T#Ne3&lxd!A31aCR)?N*+O~6@zk1~3A8w&`g$HR6OMQO>+bLFo^ zB*$Nj-8jLrj?20D`{7+DH$I4*vhMgBi>{uP;`YaSQ}(LrJn{d!^XZNwcV@jgw|#l= z^iB6JehR$%rnx?nk#IW3NbB{5KgAhJ-LE_6cw_-{n`((`L`h0wNvc(HQ7VvPFfuSS z*EKNLH8cz{w6robvNE;QHZZa>Ft~Eyx+jW;-29Zxv`X9>md?%p3e>>h>FVdQ&MBb@ E0CAn~>;M1& literal 3338 zcmd^BZCH|5AHS`o+j_B7&kS+FV!s8$aTJwEKV8HQ<(&?c) z7i3cQ!&kbY*6qhOrP-!c`Rv$r5JL$)W@B^w8K2qM=mOfV4~mKo*&M4V?zkllT*ZCa zdt$p^_#8nxJx@s1hKVpA3H$p|p`qdCxluv6lf~kdC4oCY{T{R)`g|Gw-!l07cKQ?1 z|LB(L*JP^Hav*zaRaMoD$*7}H-Yn$yX>|22#VKUZ>%ye_>Gs@s&2x=65fyVi;`(?+ zE@Dm(IkPZ$G%Rz9x@ZMz--^oNm zBn)gWIqcx**qIMEZ%ZCBd2t}y6x<H$TG0I=<~(&93C;n0)>0PLa#O zJ$Aj5bJ1>_XJ*HRu8~Ss`skZCE>^dVL{K0GqkH8=&n+Fjy}d^-gJR#faU-z9>|uD8 zy%l7v&#UJ_%Rxj1i^*VAhtp@K27d7qFwl57Q9z|-`T_rx)^gjYSZC}u~om$ zlhj$Wbji_Q%$T74wLMMKIt9*7&Lav1sV3*loSe-YHss~yMc5n$3nnKg^&>oq@-aBO za`3T2fjJo;->KDVQ6BEK+CJJShm@C-lf$~#&BxfEKe4@4m!T4;7T{fQ8nzg=vMUrl+l9Z!Mxu0H}asU)! zowfCx?p8n^x}s|bR%lQTC!5bpwc}YIixpnr8Cr|>)l1}|c4PP-m#iDP@(cpWTG1Ew6lAwnmC_Ex#XGJajXT9*j(vb)NF1v|!~EkEzFB=<^)`cP$G8 z;HQw{4!vIAJ>ar-=+2!xu#A-E7`G}R5E@7kpiHogML0pi;cT4X`7eAL!Q^SrErD^8 zy;PCrfbdfgrqj(m^nt^93!{&`j6l>gT9vF#6&1CdYPe!oMF>!~OeWLsK*}#rWo)kk zaR~J^P{=Gvqb^aYRQW4%B#!;Re{HCtP&9JB0Kmj+M#hO5;8386S0cP=$AH!fzE;=Yyk5*UB|TA9FmH}r_z}^z!}H4nB>gil%4G6 z9~J_xlb&CMm35uDDo;4^sRo{fH2azG5*Ztp9go1U6U0AS+#(LdsGj1wCz0a|6=Qc1^HbdXmrM>S0t*()Vwn+DC^U(y5cxVcK+hK8L6w<5c%EAMF)`4 zOTW1ZE5GeflcLQr*8VZi$rD7um{P*5XE1<#CGZD?Cjgwq5x-xXlxJnyc=VI|`vDe0 z`Wdzr%Wat&EEa2)NHAQ$GX_nA8#W~HNyG1&fh7VzO=~-cU;)Wibe$QGH?iNxA->Fx zEWomZdBU`5_XOG6hlV>be7OicuimTZ%>d@0>`K60{fNh&pN5im<2Bnja`G@YLwA#9lwzi;c*&+Q&C-f~;#Y6Yv7MutBhT+U z^W0TcYF~ljCzM>b#i=)B8xU(yeP6dBK*tAlD{nWP_&gVtE}MugT1dBps>{TPN;dJr4c}1k7!?3Y^ zKBReJlfrAyFb>7yo&OhR>o)(oFsf5DAAO@InU8x!Hh@{gt6dj{-=Y{*L8L;^o1$ zTAFbI*<7Knm#Xi`fxkT1fA9YD3b^1(nZiKdEIuKMQxDhDy2?vxX)!Tfs2SyVs}#EQK$TV-ROJ?t@3GMjkO})8)+Lh32*mGG>Ze}Wp{|X$JN^9pmUCZ< zZa9C3Y5yBW)<3XqnBxw7PB`0=pOs3KHQ8qrK01|DGeitRIIJ6OzhsSOaV5$)g2Mny zg|cnv|G>v#9hUgIq54;O9qv$@qWYF~&;jH|Dx6rnT(3nF_)GM5ZyKJ6&%Ybp0d7X$ zzV*Z&ij&Of=O!yr$_ByRl#~>`xB%n-n&p&2KAJd%K#&&SZ9s+LKg3m$-_-eKb9=72 zN9o)XYS+EyEASsZPYLu!iaDAEwAs-}laKN-(wif4qWM+nJc%PXP}+dh@Hq&lS?jy7 zZ}%?jSP3m|Yk>+NXa)2>^vQo6{I#gRveTb2|DRhHKrdGPXS!kbW^ZUyU(rbxt~V6| OE#z=`VAB_;zWFz_;LFee diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index 3a288f791..f358b99ec 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -153,10 +153,10 @@ $('[data-action="expand-entity-list-details"]').click(function() { $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240); }); -// Toggle thumbnails +// Toggle thumbnail::hide image and reduce grid size $(document).ready(function(){ $('[data-action="expand-thumbnail"]').click(function(){ - $('.galleryItem').toggleClass("collapse").find('img').slideToggle(50); + $('.gallery-item').toggleClass("collapse").find('img').slideToggle(50); }); }); diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index aa3ac1069..67ff3fa0a 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -63,11 +63,6 @@ body.dragging, body.dragging * { &.square { border-radius: 3px; } - &.cover { - height: 192px; - width: 120px; - border-radius: 3px; - } } // System wide notifications @@ -279,9 +274,14 @@ $btt-size: 40px; } } -.galleryItem { - margin-bottom: 32px; + + +.gallery-item { + width: 22%; + padding: 5px; + float: left; height: 330px; + margin: 2% 1% 2% 1%; overflow: hidden; border: 1px solid #9e9e9e; h3 { @@ -291,6 +291,7 @@ $btt-size: 40px; p { font-size: 0.8em; text-align: center; + padding: 0px 12px; } img { height: 192px; @@ -300,4 +301,4 @@ $btt-size: 40px; &.collapse { height: 130px; } -} +} \ No newline at end of file diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index c3ee51abb..8c1bb4569 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -18,6 +18,7 @@ return [ 'description' => 'Beschreibung', 'role' => 'Rolle', 'cover_image' => 'Titelbild', + 'cover_image_description' => 'Das Bild sollte in einem Verhältnis von Höhe zu Breite von 1.6: 1 sein.', /** * Actions diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 21d65321f..9d72b7942 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -91,7 +91,7 @@ return [ 'users_external_auth_id' => 'Externe Authentifizierungs-ID', 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:', 'users_system_public' => 'Dieser Benutzer repräsentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', - 'users_books_display_type' => 'Wählen Sie die Art der Ansicht aus', + 'users_books_display_type' => 'Bevorzugtes Display-Layout für Bücher', 'users_delete' => 'Benutzer löschen', 'users_delete_named' => 'Benutzer :userName löschen', 'users_delete_warning' => 'Sie möchten den Benutzer \':userName\' gänzlich aus dem System löschen.', diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index c05cfa56c..9f35ddac7 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -18,7 +18,7 @@ return [ 'description' => 'Description', 'role' => 'Role', 'cover_image' => 'Cover image', - + 'cover_image_description' => 'The image should be in a height/width ratio of 1.6:1.', /** * Actions */ diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index e95bf35a3..becaa5859 100644 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -91,7 +91,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' => 'Select the type of view', + 'users_books_display_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/common.php b/resources/lang/es/common.php index 9a8fafc95..9514918ed 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -18,6 +18,7 @@ return [ 'description' => 'Descripción', 'role' => 'Rol', 'cover_image' => 'Imagen de portada', + 'cover_image_description' => 'La imagen debe estar en una relación altura / anchura de 1.6: 1.', /** * Actions */ diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index 90bb0db2c..4651247b9 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' => 'Seleccione el tipo de vista', + 'users_books_display_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/common.php b/resources/lang/fr/common.php index fe8bb761a..129cf082e 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -18,6 +18,7 @@ return [ 'description' => 'Description', 'role' => 'Rôle', 'cover_image' => 'Image de couverture', + 'cover_image_description' => 'L\'image devrait avoir un rapport d\'aspect 1.6: 1', /** * Actions */ diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 288c56d5a..5d9c966e7 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' => 'Sélectionnez le type de vue', + 'users_books_display_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/common.php b/resources/lang/nl/common.php index a096c1d22..e26a4651a 100644 --- a/resources/lang/nl/common.php +++ b/resources/lang/nl/common.php @@ -18,6 +18,7 @@ return [ 'description' => 'Beschrijving', 'role' => 'Rol', 'cover_image' => 'Omslagfoto', + 'cover_image_description' => 'De afbeelding moet in een hoogte / breedte verhouding van 1.6: 1 zijn.', /** * Actions */ diff --git a/resources/lang/nl/settings.php b/resources/lang/nl/settings.php index 7b2f94530..0323d87d4 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' => 'Selecteer het type weergave', + 'users_books_display_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/common.php b/resources/lang/pt_BR/common.php index eba301929..510271166 100644 --- a/resources/lang/pt_BR/common.php +++ b/resources/lang/pt_BR/common.php @@ -18,6 +18,7 @@ return [ 'description' => 'Descrição', 'role' => 'Regra', 'cover_image' => 'Imagem de capa', + 'cover_image_description' => 'A imagem deve estar em uma relação de aspecto 1.6: 1.', /** * Actions */ diff --git a/resources/lang/pt_BR/settings.php b/resources/lang/pt_BR/settings.php index b46eda8df..6c8ff3039 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' => 'Selecione o tipo de exibição', + 'users_books_display_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/common.php b/resources/lang/sk/common.php index 19ba665b5..28fdad0f1 100644 --- a/resources/lang/sk/common.php +++ b/resources/lang/sk/common.php @@ -18,6 +18,7 @@ return [ 'description' => 'Popis', 'role' => 'Rola', 'cover_image' => 'Obal knihy', + 'cover_image_description' => 'Obraz by mal mať pomer strán 1.6: 1.', /** * Actions */ diff --git a/resources/lang/sk/settings.php b/resources/lang/sk/settings.php index 1c745fcf8..8a8d93e59 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' => 'Vyberte typ zobrazenia', + 'users_books_display_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/grid-item.blade.php b/resources/views/books/grid-item.blade.php index d11a66eac..839e9f3a3 100644 --- a/resources/views/books/grid-item.blade.php +++ b/resources/views/books/grid-item.blade.php @@ -1,15 +1,19 @@
-
-

+

+
@if(isset($book->searchSnippet))

{!! $book->searchSnippet !!}

@else -

{{ $book->getExcerpt() }}

+

{{ $book->getExcerpt(80) }}

@endif
\ No newline at end of file diff --git a/resources/views/components/image-picker.blade.php b/resources/views/components/image-picker.blade.php index 47fb2b8b7..6fd81dabd 100644 --- a/resources/views/components/image-picker.blade.php +++ b/resources/views/components/image-picker.blade.php @@ -13,7 +13,7 @@ @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') }}; From 02fd1c48ed9575ef242927018be65c0cf28c5fc0 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 7 Dec 2017 18:44:20 +0000 Subject: [PATCH 80/89] Added meta+enter shortcut for page save Closes #604 --- resources/assets/js/components/markdown-editor.js | 2 ++ resources/assets/js/pages/page-form.js | 5 +++++ resources/assets/js/vues/page-editor.js | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/resources/assets/js/components/markdown-editor.js b/resources/assets/js/components/markdown-editor.js index e646dfd2b..7b051dd12 100644 --- a/resources/assets/js/components/markdown-editor.js +++ b/resources/assets/js/components/markdown-editor.js @@ -84,6 +84,8 @@ class MarkdownEditor { }; // Save draft extraKeys[`${metaKey}-S`] = cm => {window.$events.emit('editor-save-draft')}; + // Save page + extraKeys[`${metaKey}-Enter`] = cm => {window.$events.emit('editor-save-page')}; // Show link selector extraKeys[`Shift-${metaKey}-K`] = cm => {this.actionShowLinkSelector()}; // Insert Link diff --git a/resources/assets/js/pages/page-form.js b/resources/assets/js/pages/page-form.js index ec433b316..73a6c976d 100644 --- a/resources/assets/js/pages/page-form.js +++ b/resources/assets/js/pages/page-form.js @@ -71,6 +71,11 @@ function registerEditorShortcuts(editor) { window.$events.emit('editor-save-draft'); }); + // Save page shortcut + editor.shortcuts.add('meta+13', '', () => { + window.$events.emit('editor-save-page'); + }); + // Loop through callout styles editor.shortcuts.add('meta+9', '', function() { let selectedNode = editor.selection.getNode(); diff --git a/resources/assets/js/vues/page-editor.js b/resources/assets/js/vues/page-editor.js index 9d7179a7e..d33739b30 100644 --- a/resources/assets/js/vues/page-editor.js +++ b/resources/assets/js/vues/page-editor.js @@ -34,8 +34,9 @@ function mounted() { this.draftText = trans('entities.pages_editing_page'); } - // Listen to save draft events from editor + // Listen to save events from editor window.$events.listen('editor-save-draft', this.saveDraft); + window.$events.listen('editor-save-page', this.savePage); // Listen to content changes from the editor window.$events.listen('editor-html-change', html => { @@ -106,6 +107,9 @@ let methods = { }); }, + savePage() { + this.$el.closest('form').submit(); + }, draftNotifyChange(text) { this.draftText = text; From 91444e83fd2df128e5f01a767c5cf00eb2ffe7e9 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 7 Dec 2017 19:10:31 +0000 Subject: [PATCH 81/89] Cleaned up some page-show JS --- resources/assets/js/pages/page-show.js | 61 +++++++++++++------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/resources/assets/js/pages/page-show.js b/resources/assets/js/pages/page-show.js index 32c1b6f5b..8c2f0e300 100644 --- a/resources/assets/js/pages/page-show.js +++ b/resources/assets/js/pages/page-show.js @@ -102,23 +102,28 @@ let setupPageShow = window.setupPageShow = function (pageId) { let $window = $(window); let $sidebar = $("#sidebar .scroll-body"); let $bookTreeParent = $sidebar.parent(); + // Check the page is scrollable and the content is taller than the tree let pageScrollable = ($(document).height() > $window.height()) && ($sidebar.height() < $('.page-content').height()); + // Get current tree's width and header height let headerHeight = $("#header").height() + $(".toolbar").height(); let isFixed = $window.scrollTop() > headerHeight; - // Function to fix the tree as a sidebar + + // Fix the tree as a sidebar function stickTree() { $sidebar.width($bookTreeParent.width() + 15); $sidebar.addClass("fixed"); isFixed = true; } - // Function to un-fix the tree back into position + + // Un-fix the tree back into position function unstickTree() { $sidebar.css('width', 'auto'); $sidebar.removeClass("fixed"); isFixed = false; } + // Checks if the tree stickiness state should change function checkTreeStickiness(skipCheck) { let shouldBeFixed = $window.scrollTop() > headerHeight; @@ -160,25 +165,22 @@ let setupPageShow = window.setupPageShow = function (pageId) { } function addPageHighlighting() { - let $pageNav = null; + let pageNav = document.querySelector('.sidebar-page-nav'); - $(document).ready(function () { - // fetch all the headings. - let headings = document.querySelector('.page-content').querySelectorAll('h1, h2, h3, h4, h5, h6'); - // if headings are present, add observers. - if (headings.length > 0) { - addNavObserver(headings); - } - }); + // fetch all the headings. + let headings = document.querySelector('.page-content').querySelectorAll('h1, h2, h3, h4, h5, h6'); + // if headings are present, add observers. + if (headings.length > 0) { + addNavObserver(headings); + } function addNavObserver(headings) { // Setup the intersection observer. let intersectOpts = { rootMargin: '0px 0px 0px 0px', threshold: 1.0 - } - $pageNav = $('.sidebar-page-nav'); - let pageNavObserver = new IntersectionObserver(cbHeadingVisible, intersectOpts); + }; + let pageNavObserver = new IntersectionObserver(headingVisibilityChange, intersectOpts); // observe each heading for (let i = 0; i !== headings.length; ++i) { @@ -186,26 +188,25 @@ let setupPageShow = window.setupPageShow = function (pageId) { } } - function cbHeadingVisible(entries, observer) { - for (let i = 0; i !== entries.length; ++i) { + function headingVisibilityChange(entries, observer) { + for (let i = 0; i < entries.length; i++) { let currentEntry = entries[i]; - let element = currentEntry.target; - // check if its currently visible - if (currentEntry.intersectionRatio === 1) { - highlightElement(element.id); - } else { - removeHighlight(element.id); - } + let isVisible = (currentEntry.intersectionRatio === 1); + toggleAnchorHighlighting(currentEntry.target.id, isVisible); } } - function highlightElement(elementId) { - $pageNav.find('a[href="#' + elementId + '"]').addClass('current-heading'); - } - - function removeHighlight(elementId) { - $pageNav.find('a[href="#' + elementId + '"]').removeClass('current-heading'); - } + function toggleAnchorHighlighting(elementId, shouldHighlight) { + let anchorsToHighlight = pageNav.querySelectorAll('a[href="#' + elementId + '"]'); + for (let i = 0; i < anchorsToHighlight.length; i++) { + // Change below to use classList.toggle when IE support is dropped. + if (shouldHighlight) { + anchorsToHighlight[i].classList.add('current-heading'); + } else { + anchorsToHighlight[i].classList.remove('current-heading'); + } + } + } } }; From b65abd25e098471bdb78bda60f61465c640004fd Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 7 Dec 2017 19:19:25 +0000 Subject: [PATCH 82/89] Made small var name and formatting tweaks --- app/Http/Controllers/PageController.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 36cdd3aef..13e928465 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -163,18 +163,20 @@ class PageController extends Controller $pageNav = $this->entityRepo->getPageNav($page->html); // check if the comment's are enabled - $areCommentsEnabled = !setting('app-disable-comments'); - if ($areCommentsEnabled) { - $page->load(['comments.createdBy']); + $commentsEnabled = !setting('app-disable-comments'); + if ($commentsEnabled) { + $page->load(['comments.createdBy']); } Views::add($page); $this->setPageTitle($page->getShortName()); return view('pages/show', [ 'page' => $page,'book' => $page->book, - 'current' => $page, 'sidebarTree' => $sidebarTree, - 'commentsEnabled' => $areCommentsEnabled, - 'pageNav' => $pageNav]); + 'current' => $page, + 'sidebarTree' => $sidebarTree, + 'commentsEnabled' => $commentsEnabled, + 'pageNav' => $pageNav + ]); } /** From 06cf175b084c5c12e79a64375a5d6695bbdd8322 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 7 Dec 2017 19:27:54 +0000 Subject: [PATCH 83/89] Prevented page navigation highlighting erroring This was when no page nav was on the page --- resources/assets/js/pages/page-show.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/assets/js/pages/page-show.js b/resources/assets/js/pages/page-show.js index 8c2f0e300..6af5af57d 100644 --- a/resources/assets/js/pages/page-show.js +++ b/resources/assets/js/pages/page-show.js @@ -170,7 +170,7 @@ let setupPageShow = window.setupPageShow = function (pageId) { // fetch all the headings. let headings = document.querySelector('.page-content').querySelectorAll('h1, h2, h3, h4, h5, h6'); // if headings are present, add observers. - if (headings.length > 0) { + if (headings.length > 0 && pageNav !== null) { addNavObserver(headings); } From 56d5af1336d863412f715d462696b006457ee324 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 7 Dec 2017 19:46:25 +0000 Subject: [PATCH 84/89] Made it possible to configure proxies via env In reference to #146 --- app/Http/Middleware/TrustProxies.php | 18 ++++++++++++++++++ config/app.php | 2 ++ 2 files changed, 20 insertions(+) diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 69fcbe943..c3102571d 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -2,6 +2,7 @@ namespace BookStack\Http\Middleware; +use Closure; use Illuminate\Http\Request; use Fideloper\Proxy\TrustProxies as Middleware; @@ -26,4 +27,21 @@ class TrustProxies extends Middleware Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', ]; + + /** + * Handle the request, Set the correct user-configured proxy information. + * @param Request $request + * @param Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + $setProxies = config('app.proxies'); + if ($setProxies !== '**' && $setProxies !== '*' && $setProxies !== '') { + $setProxies = explode(',', $setProxies); + } + $this->proxies = $setProxies; + + return parent::handle($request, $next); + } } diff --git a/config/app.php b/config/app.php index d8def5c95..3be50b6c5 100755 --- a/config/app.php +++ b/config/app.php @@ -234,4 +234,6 @@ return [ ], + 'proxies' => env('APP_PROXIES', ''), + ]; From d7edc389a6f4480cdd81903144affb299360e3e0 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 8 Dec 2017 11:52:43 +0000 Subject: [PATCH 85/89] Enabled custom HTML head content to work within editors Closes #562 --- app/Http/Controllers/HomeController.php | 10 ++++++++++ resources/assets/js/pages/page-form.js | 14 ++++++++++++++ resources/assets/sass/_forms.scss | 7 ++++--- resources/views/pages/form.blade.php | 3 +-- .../views/partials/custom-head-content.blade.php | 5 +++++ routes/web.php | 1 + 6 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 resources/views/partials/custom-head-content.blade.php diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 7d109b70a..164becd4d 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -54,6 +54,7 @@ class HomeController extends Controller /** * Get a js representation of the current translations * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response + * @throws \Exception */ public function getTranslations() { $locale = app()->getLocale(); @@ -86,4 +87,13 @@ class HomeController extends Controller ]); } + /** + * Get custom head HTML, Used in ajax calls to show in editor. + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function customHeadContent() + { + return view('partials/custom-head-content'); + } + } diff --git a/resources/assets/js/pages/page-form.js b/resources/assets/js/pages/page-form.js index 73a6c976d..904403fc1 100644 --- a/resources/assets/js/pages/page-form.js +++ b/resources/assets/js/pages/page-form.js @@ -97,6 +97,17 @@ function registerEditorShortcuts(editor) { } +/** + * Load custom HTML head content from the settings into the editor. + * @param editor + */ +function loadCustomHeadContent(editor) { + window.$http.get(window.baseUrl('/custom-head-content')).then(resp => { + if (!resp.data) return; + let head = editor.getDoc().querySelector('head'); + head.innerHTML += resp.data; + }); +} /** * Create and enable our custom code plugin @@ -322,6 +333,9 @@ module.exports = { args.content = ''; } }, + init_instance_callback: function(editor) { + loadCustomHeadContent(editor); + }, setup: function (editor) { editor.on('init ExecCommand change input NodeChange ObjectResized', editorChange); diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss index 700c15336..802a075a2 100644 --- a/resources/assets/sass/_forms.scss +++ b/resources/assets/sass/_forms.scss @@ -63,9 +63,10 @@ padding: 0 $-m 0; margin-left: -1px; overflow-y: scroll; - .page-content { - margin: 0 auto; - } + } + .markdown-display.page-content { + margin: 0 auto; + max-width: 100%; } } .editor-toolbar { diff --git a/resources/views/pages/form.blade.php b/resources/views/pages/form.blade.php index 12f2f3e97..f450452ce 100644 --- a/resources/views/pages/form.blade.php +++ b/resources/views/pages/form.blade.php @@ -97,8 +97,7 @@
{{ trans('entities.pages_md_preview') }}
-
-
+
diff --git a/resources/views/partials/custom-head-content.blade.php b/resources/views/partials/custom-head-content.blade.php new file mode 100644 index 000000000..b245b7ad6 --- /dev/null +++ b/resources/views/partials/custom-head-content.blade.php @@ -0,0 +1,5 @@ +@if(setting('app-custom-head', false)) + + {!! setting('app-custom-head') !!} + +@endif \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 8bff3b2ec..f5e59f109 100644 --- a/routes/web.php +++ b/routes/web.php @@ -135,6 +135,7 @@ Route::group(['middleware' => 'auth'], function () { // Other Pages Route::get('/', 'HomeController@index'); Route::get('/home', 'HomeController@index'); + Route::get('/custom-head-content', 'HomeController@customHeadContent'); // Settings Route::group(['prefix' => 'settings'], function() { From ac7e3977de279ffcf7b1d6d7bfb9c5046e4041cf Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 9 Dec 2017 12:37:44 +0000 Subject: [PATCH 86/89] Fixed WYSIWYG fullscreen mode on firefox Prevented overlapping sidebar and collapsed content. Fixes #605 --- resources/assets/sass/_tinymce.scss | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/resources/assets/sass/_tinymce.scss b/resources/assets/sass/_tinymce.scss index b8394b25b..92af39a87 100644 --- a/resources/assets/sass/_tinymce.scss +++ b/resources/assets/sass/_tinymce.scss @@ -1,16 +1,13 @@ - -.mce-tinymce.mce-container.fullscreen { +.mce-tinymce.mce-container.mce-fullscreen { position: fixed; top: 0; height: 100%; - width: 825px; + width: 100%; max-width: 100%; - margin-left: -$-s; - box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.08); + z-index: 100; } - .mce-tinymce { .mce-panel { background-color: #FFF; From 90bf13c1ab0642d70e4c101c4a7d30f9403ca6ae Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 9 Dec 2017 13:32:45 +0000 Subject: [PATCH 87/89] Updated okta config keys, made SVG fully vector Also added some additional error handling to login. --- app/Http/Controllers/Auth/RegisterController.php | 16 +++++++++++++++- app/Services/SocialAuthService.php | 5 +++-- config/services.php | 4 ++-- resources/assets/icons/okta.svg | 2 +- resources/lang/en/errors.php | 1 + 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 0fa005e1f..5a7a5e971 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -250,15 +250,27 @@ class RegisterController extends Controller /** * The callback for social login services. * @param $socialDriver + * @param Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @throws SocialSignInException + * @throws UserRegistrationException + * @throws \BookStack\Exceptions\SocialDriverNotConfigured + * @throws ConfirmationEmailException */ - public function socialCallback($socialDriver) + public function socialCallback($socialDriver, Request $request) { if (!session()->has('social-callback')) { throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login'); } + // Check request for error information + if ($request->has('error') && $request->has('error_description')) { + throw new SocialSignInException(trans('errors.social_login_bad_response', [ + 'socialAccount' => $socialDriver, + 'error' => $request->get('error_description'), + ]), '/login'); + } + $action = session()->pull('social-callback'); if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver); if ($action == 'register') return $this->socialRegisterCallback($socialDriver); @@ -279,7 +291,9 @@ class RegisterController extends Controller * Register a new user after a registration callback. * @param $socialDriver * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + * @throws ConfirmationEmailException * @throws UserRegistrationException + * @throws \BookStack\Exceptions\SocialDriverNotConfigured */ protected function socialRegisterCallback($socialDriver) { diff --git a/app/Services/SocialAuthService.php b/app/Services/SocialAuthService.php index 6286a6014..d52464539 100644 --- a/app/Services/SocialAuthService.php +++ b/app/Services/SocialAuthService.php @@ -1,5 +1,7 @@ validateDriver($socialDriver); - // Get user details from social driver $socialUser = $this->socialite->driver($driver)->user(); $socialId = $socialUser->getId(); @@ -135,7 +136,7 @@ class SocialAuthService $message .= trans('errors.social_account_register_instructions', ['socialAccount' => title_case($socialDriver)]); } - throw new SocialSignInException($message . '.', '/login'); + throw new SocialSignInException($message, '/login'); } /** diff --git a/config/services.php b/config/services.php index 514720d72..ba9be69de 100644 --- a/config/services.php +++ b/config/services.php @@ -81,8 +81,8 @@ return [ ], 'okta' => [ - 'client_id' => env('OKTA_KEY'), - 'client_secret' => env('OKTA_SECRET'), + 'client_id' => env('OKTA_APP_ID'), + 'client_secret' => env('OKTA_APP_SECRET'), 'redirect' => env('APP_URL') . '/login/service/okta/callback', 'base_url' => env('OKTA_BASE_URL'), 'name' => 'Okta', diff --git a/resources/assets/icons/okta.svg b/resources/assets/icons/okta.svg index 3ae0d63a3..b5f3b1d3f 100644 --- a/resources/assets/icons/okta.svg +++ b/resources/assets/icons/okta.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php index 572bec42b..18ed63c60 100644 --- a/resources/lang/en/errors.php +++ b/resources/lang/en/errors.php @@ -20,6 +20,7 @@ return [ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed', 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed', 'social_no_action_defined' => 'No action defined', + 'social_login_bad_response' => "Error received during :socialAccount login: \n:error", 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.', 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.', 'social_account_existing' => 'This :socialAccount is already attached to your profile.', From 3ed54263155acfd73dbd4cadebd6b221211ce9e3 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 10 Dec 2017 13:46:50 +0000 Subject: [PATCH 88/89] Moved book cover image input into collapsible section Prevent extra friction when creating a new book and makes it easier to skip if grid view is not in use --- resources/assets/js/components/collapsible.js | 37 +++++++++++++++++++ resources/assets/js/components/index.js | 1 + resources/assets/sass/_forms.scss | 35 ++++++++++++++++++ resources/views/books/form.blade.php | 31 +++++++++------- 4 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 resources/assets/js/components/collapsible.js diff --git a/resources/assets/js/components/collapsible.js b/resources/assets/js/components/collapsible.js new file mode 100644 index 000000000..11b06fc9b --- /dev/null +++ b/resources/assets/js/components/collapsible.js @@ -0,0 +1,37 @@ +/** + * Collapsible + * Provides some simple logic to allow collapsible sections. + */ +class Collapsible { + + constructor(elem) { + this.elem = elem; + this.trigger = elem.querySelector('[collapsible-trigger]'); + this.content = elem.querySelector('[collapsible-content]'); + + if (!this.trigger) return; + + this.trigger.addEventListener('click', this.toggle.bind(this)); + } + + open() { + this.elem.classList.add('open'); + $(this.content).slideDown(400); + } + + close() { + this.elem.classList.remove('open'); + $(this.content).slideUp(400); + } + + toggle() { + if (this.elem.classList.contains('open')) { + this.close(); + } else { + this.open(); + } + } + +} + +module.exports = Collapsible; \ No newline at end of file diff --git a/resources/assets/js/components/index.js b/resources/assets/js/components/index.js index 4cb16d06a..5340f6ed7 100644 --- a/resources/assets/js/components/index.js +++ b/resources/assets/js/components/index.js @@ -15,6 +15,7 @@ let componentMapping = { 'markdown-editor': require('./markdown-editor'), 'editor-toolbox': require('./editor-toolbox'), 'image-picker': require('./image-picker'), + 'collapsible': require('./collapsible'), }; window.components = {}; diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss index 802a075a2..457d30e54 100644 --- a/resources/assets/sass/_forms.scss +++ b/resources/assets/sass/_forms.scss @@ -191,6 +191,41 @@ input:checked + .toggle-switch { } } +.form-group[collapsible] { + margin-left: -$-m; + margin-right: -$-m; + padding: 0 $-m; + border-top: 1px solid #DDD; + border-bottom: 1px solid #DDD; + .collapse-title { + margin-left: -$-m; + margin-right: -$-m; + padding: $-s $-m; + } + .collapse-title, .collapse-title label { + cursor: pointer; + } + .collapse-title label { + padding-bottom: 0; + margin-bottom: 0; + color: inherit; + } + .collapse-title label:before { + display: inline-block; + content: '▸'; + margin-right: $-m; + transition: all ease-in-out 400ms; + transform: rotate(0); + } + .collapse-content { + display: none; + padding-bottom: $-m; + } + &.open .collapse-title label:before { + transform: rotate(90deg); + } +} + .inline-input-style { display: block; width: 100%; diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index 06eea7ca9..0620ae976 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -9,20 +9,25 @@ @include('form/textarea', ['name' => 'description'])
-
- -

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

- @include('components.image-picker', [ - 'resizeHeight' => '512', - 'resizeWidth' => '512', - '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, - 'name' => 'image_id', - 'imageClass' => 'cover' - ]) +
+
+ +
+
+

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

+ + @include('components.image-picker', [ + 'resizeHeight' => '512', + 'resizeWidth' => '512', + '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, + 'name' => 'image_id', + 'imageClass' => 'cover' + ]) +
From 03eb63ec7781c4a3268600fe06ad55f14ee3021c Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 10 Dec 2017 13:56:25 +0000 Subject: [PATCH 89/89] Made it possible to pre-fill login via url Allows email to be passed to email field. Also allows password only if in demo mode (Due to security concerns). --- app/Http/Controllers/Auth/LoginController.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 782cfd0ae..3617652c2 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -102,12 +102,21 @@ class LoginController extends Controller /** * Show the application login form. + * @param Request $request * @return \Illuminate\Http\Response */ - public function getLogin() + public function getLogin(Request $request) { $socialDrivers = $this->socialAuthService->getActiveDrivers(); $authMethod = config('auth.method'); + + if ($request->has('email')) { + session()->flashInput([ + 'email' => $request->get('email'), + 'password' => (config('app.env') === 'demo') ? $request->get('password', '') : '' + ]); + } + return view('auth/login', ['socialDrivers' => $socialDrivers, 'authMethod' => $authMethod]); }