From c1318ff066470faa9a1b7f91bc06fdb06a28fc21 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Thu, 31 Dec 2015 14:34:53 +0100 Subject: [PATCH 1/9] Sortable Adding sortable migration --- .../2015_12_19_143643_add_sortable.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Database/Migrations/2015_12_19_143643_add_sortable.php diff --git a/Database/Migrations/2015_12_19_143643_add_sortable.php b/Database/Migrations/2015_12_19_143643_add_sortable.php new file mode 100644 index 00000000..44a1d72e --- /dev/null +++ b/Database/Migrations/2015_12_19_143643_add_sortable.php @@ -0,0 +1,31 @@ +integer('order')->nullable()->after('zone'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('media__imageables', function (Blueprint $table) { + $table->dropColumn('order'); + }); + } +} From d1409d9df05e3081b5e62f9de87c42354fdb2f01 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Thu, 31 Dec 2015 14:36:41 +0100 Subject: [PATCH 2/9] Sortable route Route added + logic --- Http/Controllers/Api/MediaController.php | 18 ++++++++++++++++++ Http/apiRoutes.php | 1 + 2 files changed, 19 insertions(+) diff --git a/Http/Controllers/Api/MediaController.php b/Http/Controllers/Api/MediaController.php index da27dd3e..5b3eead0 100644 --- a/Http/Controllers/Api/MediaController.php +++ b/Http/Controllers/Api/MediaController.php @@ -105,4 +105,22 @@ public function unlinkMedia(Request $request) return Response::json(['error' => false, 'message' => 'The link has been removed.']); } + + /** + * Sort the record in the media__imageables table for the given array + * @param Request $request + */ + public function sortMedia(Request $request) + { + $imageableIdArray = $request->get('sortable'); + + $order = 1; + + foreach ($imageableIdArray as $id) { + $updated = DB::table('media__imageables')->whereId($id)->update(['order' => $order]); + $order++; + } + + return Response::json(['error' => false, 'message' => 'The items have been reorder.']); + } } diff --git a/Http/apiRoutes.php b/Http/apiRoutes.php index 270fc16a..6f0717a4 100644 --- a/Http/apiRoutes.php +++ b/Http/apiRoutes.php @@ -4,3 +4,4 @@ post('media/link', ['uses' => 'MediaController@linkMedia', 'as' => 'api.media.link']); post('media/unlink', ['uses' => 'MediaController@unlinkMedia', 'as' => 'api.media.unlink']); get('media/all', ['uses' => 'MediaController@all', 'as' => 'api.media.all', ]); +post('media/sort', ['uses' => 'MediaController@sortMedia', 'as' => 'api.media.sort']); From 0e147861dc6f6d4e6e2263b1f623ad1124de8a1f Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Thu, 31 Dec 2015 14:40:27 +0100 Subject: [PATCH 3/9] Update of MediaRelation Order by is now added --- Support/Traits/MediaRelation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Support/Traits/MediaRelation.php b/Support/Traits/MediaRelation.php index 18d4684a..243e22ea 100644 --- a/Support/Traits/MediaRelation.php +++ b/Support/Traits/MediaRelation.php @@ -8,6 +8,6 @@ trait MediaRelation */ public function files() { - return $this->morphToMany('Modules\Media\Entities\File', 'imageable', 'media__imageables')->withPivot('zone', 'id')->withTimestamps(); + return $this->morphToMany('Modules\Media\Entities\File', 'imageable', 'media__imageables')->withPivot('zone', 'id')->withTimestamps()->orderBy('order'); } } From 0483ba2c6e4f7c6e2726cb01b2a704b98a9d3574 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Thu, 31 Dec 2015 14:42:18 +0100 Subject: [PATCH 4/9] Adding Image Image is now wrapped inside the
tags --- Resources/views/admin/fields/file-link.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/views/admin/fields/file-link.blade.php b/Resources/views/admin/fields/file-link.blade.php index 2b85d037..b0b5e8eb 100644 --- a/Resources/views/admin/fields/file-link.blade.php +++ b/Resources/views/admin/fields/file-link.blade.php @@ -41,10 +41,10 @@ 'zone': window.mediaZone }, success: function (data) { - var html = '' + + var html = '
' + '' + '' + - ''; + '
'; window.zoneWrapper.append(html).fadeIn('slow', function() { toggleButton($(this)); }); From ddcc19bf1aada697bae7c53e87bb7c5a7b40f6d7 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Thu, 31 Dec 2015 14:46:15 +0100 Subject: [PATCH 5/9] Link multiple : js file and logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Load query ui as it’s needed for the sortable functionality. Data-id added, needed if we reorder without refreshing the page. Js logic and ajax call to store the order --- .../admin/fields/file-link-multiple.blade.php | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Resources/views/admin/fields/file-link-multiple.blade.php b/Resources/views/admin/fields/file-link-multiple.blade.php index 40c446fc..747fdc20 100644 --- a/Resources/views/admin/fields/file-link-multiple.blade.php +++ b/Resources/views/admin/fields/file-link-multiple.blade.php @@ -1,3 +1,4 @@ + @@ -14,6 +15,7 @@ border: 1px solid #eee; padding: 3px; border-radius: 3px; + cursor:grab; } .jsThumbnailImageWrapper i.removeIcon { position: absolute; @@ -48,7 +50,7 @@ 'zone': window.mediaZone }, success: function (data) { - var html = '
' + + var html = '
' + '' + '' + '
'; @@ -109,6 +111,28 @@ } } }); + + $(".jsThumbnailImageWrapper").sortable({ + tolerance: 'pointer', + containment: 'parent', + forcePlaceholderSize:true, + forceHelperSize: true, + cursor:'move', + update:function(event, ui) { + var dataSortable = $(this).sortable('toArray', {attribute: 'data-id'}); + $.ajax({ + global:false, /* leave it to false */ + type: 'POST', + url: '{{ route('api.media.sort') }}', + data: { + 'entityClass': '{{ $entityClass }}', + 'zone': '{{ $zone }}', + 'sortable': dataSortable, + '_token': '{{ csrf_token() }}' + } + }); + } + }); }); }); From b9038a3c9da760e16776dab76e2dc3db7506c5c3 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Thu, 31 Dec 2015 15:12:27 +0100 Subject: [PATCH 6/9] Data id Data id added on figure tags --- Resources/views/admin/fields/file-link-multiple.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/views/admin/fields/file-link-multiple.blade.php b/Resources/views/admin/fields/file-link-multiple.blade.php index 747fdc20..707e9f07 100644 --- a/Resources/views/admin/fields/file-link-multiple.blade.php +++ b/Resources/views/admin/fields/file-link-multiple.blade.php @@ -76,7 +76,7 @@ -
+
{{ $file->alt_attribute }} From 2434909b3306dff6503edb69530c5a5521d12c27 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Mon, 4 Jan 2016 18:20:59 +0100 Subject: [PATCH 7/9] Js and css Js change for the helper class + some css added --- .../admin/fields/file-link-multiple.blade.php | 56 +++++++++++-------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/Resources/views/admin/fields/file-link-multiple.blade.php b/Resources/views/admin/fields/file-link-multiple.blade.php index 707e9f07..10f00228 100644 --- a/Resources/views/admin/fields/file-link-multiple.blade.php +++ b/Resources/views/admin/fields/file-link-multiple.blade.php @@ -15,7 +15,7 @@ border: 1px solid #eee; padding: 3px; border-radius: 3px; - cursor:grab; + cursor: grab; } .jsThumbnailImageWrapper i.removeIcon { position: absolute; @@ -27,6 +27,12 @@ border-radius: 20px; height: 25px; } + + figure.ui-state-highlight { + border: none; + width:100px; + height: 0; + } From a75bf22ec644ad892c9d576fb2e63c8cd5909727 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Tue, 5 Jan 2016 17:23:26 +0100 Subject: [PATCH 8/9] Clean up css Clean up of inline css --- Resources/views/admin/fields/file-link-multiple.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/views/admin/fields/file-link-multiple.blade.php b/Resources/views/admin/fields/file-link-multiple.blade.php index 10f00228..e87f58c9 100644 --- a/Resources/views/admin/fields/file-link-multiple.blade.php +++ b/Resources/views/admin/fields/file-link-multiple.blade.php @@ -78,7 +78,7 @@ {{ trans('media::media.Browse') }}
-
+
From ab916d7cf9e0a1872b6b4466047679f06b191ef6 Mon Sep 17 00:00:00 2001 From: Motch Julien Date: Tue, 5 Jan 2016 17:33:30 +0100 Subject: [PATCH 9/9] Sortable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jquery sortable, axis :’x’ removed, needed if the images used at least 2 lines --- Resources/views/admin/fields/file-link-multiple.blade.php | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/views/admin/fields/file-link-multiple.blade.php b/Resources/views/admin/fields/file-link-multiple.blade.php index e87f58c9..7122c035 100644 --- a/Resources/views/admin/fields/file-link-multiple.blade.php +++ b/Resources/views/admin/fields/file-link-multiple.blade.php @@ -120,7 +120,6 @@ }); $(".jsThumbnailImageWrapper").sortable({ - axis: 'x', placeholder: 'ui-state-highlight', cursor:'move', helper: 'clone',