diff --git a/app/Http/Controllers/Modules/Item.php b/app/Http/Controllers/Modules/Item.php
index 016e912d4..dbc11a14d 100644
--- a/app/Http/Controllers/Modules/Item.php
+++ b/app/Http/Controllers/Modules/Item.php
@@ -302,4 +302,27 @@ class Item extends Controller
return redirect('apps/' . $alias);
}
+
+ public function reviews($alias, Request $request)
+ {
+ $page = $request['page'];
+
+ $data = [
+ 'query' => [
+ 'page' => ($page) ? $page : 1,
+ ]
+ ];
+
+ $reviews = $this->getModuleReviews($alias, $data);
+
+ $html = view('partials.modules.reviews', compact('reviews'))->render();
+
+ return response()->json([
+ 'success' => true,
+ 'error' => false,
+ 'data' => null,
+ 'message' => null,
+ 'html' => $html,
+ ]);
+ }
}
diff --git a/app/Traits/Modules.php b/app/Traits/Modules.php
index 4a8fd0d70..ec1c56bed 100644
--- a/app/Traits/Modules.php
+++ b/app/Traits/Modules.php
@@ -57,6 +57,17 @@ trait Modules
return [];
}
+ public function getModuleReviews($alias, $data = [])
+ {
+ $response = $this->getRemote('apps/' . $alias . '/reviews', 'GET', $data);
+
+ if ($response && ($response->getStatusCode() == 200)) {
+ return json_decode($response->getBody())->data;
+ }
+
+ return [];
+ }
+
public function getCategories()
{
$response = $this->getRemote('apps/categories');
diff --git a/resources/views/modules/item/show.blade.php b/resources/views/modules/item/show.blade.php
index c22cbd855..af8f8c408 100644
--- a/resources/views/modules/item/show.blade.php
+++ b/resources/views/modules/item/show.blade.php
@@ -61,32 +61,8 @@
@endif
- @if($module->reviews)
- @foreach($module->reviews as $review)
-
-
-

-
- {{ $review->author }}
-
- @for($i = 1; $i <= $review->rating; $i++)
-
- @endfor
- @for($i = $review->rating; $i < 5; $i++)
-
- @endfor
-
-
-
{{ \Carbon\Carbon::parse($review->created_at)->format('F d, Y \a\t G:ia') }}
-
-
-
- {!! nl2br($review->text) !!}
-
-
- @endforeach
- @else
- {{ trans('modules.reviews.na') }}
+ @if(!$module->reviews)
+ {{ trans('modules.reviews.na') }}
@endif
@@ -216,6 +192,10 @@
var path = '';
$(document).ready(function() {
+ @if($module->reviews)
+ getReviews('', '1');
+ @endif
+
$('#install-module').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
@@ -247,6 +227,16 @@
});
});
+ $(document).on('click', '#reviews .pagination li a', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ path = $(this).attr('href');
+ page = $(this).data('page');
+
+ getReviews(path, page);
+ });
+
function next() {
data = step.shift();
@@ -320,5 +310,27 @@
$('#modal-installation').modal('show');
}
+
+ function getReviews(path, page) {
+ $.ajax({
+ url: '{{ url("apps/" . $module->slug . "/reviews") }}',
+ type: 'post',
+ dataType: 'json',
+ data: {path: path, page: page},
+ headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' },
+ beforeSend: function() {
+ $('#reviews').append('
');
+ },
+ complete : function() {
+ $('#loading').remove();
+ },
+ success: function(json) {
+ if (json['success']) {
+ $('#reviews #review-items').remove();
+ $('#reviews').append(json['html']);
+ }
+ }
+ });
+ }
@endpush
diff --git a/resources/views/partials/modules/reviews.blade.php b/resources/views/partials/modules/reviews.blade.php
new file mode 100644
index 000000000..eaee484f3
--- /dev/null
+++ b/resources/views/partials/modules/reviews.blade.php
@@ -0,0 +1,68 @@
+
+ @foreach($reviews->data as $review)
+
+
+

+
+ {{ $review->author }}
+
+ @for($i = 1; $i <= $review->rating; $i++)
+
+ @endfor
+ @for($i = $review->rating; $i < 5; $i++)
+
+ @endfor
+
+
+
{{ \Carbon\Carbon::parse($review->created_at)->format('F d, Y') }}
+
+
+
+ {!! nl2br($review->text) !!}
+
+
+ @endforeach
+
+ @stack('pagination_start')
+ @php
+ $review_first_item = count($reviews->data) > 0 ? ($reviews->current_page - 1) * $reviews->per_page + 1 : null;
+ $review_last_item = count($reviews->data) > 0 ? $review_first_item + count($reviews->data) - 1 : null;
+ @endphp
+ @if ($review_first_item)
+
+ {{ trans('pagination.showing', ['first' => $review_first_item, 'last' => $review_last_item, 'total' => $reviews->total, 'type' => strtolower(trans('modules.tab.reviews'))]) }}
+
+
+
+
+ @else
+
+ {{ trans('general.no_records') }}
+
+ @endif
+
+ @stack('pagination_end')
+
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index d32947fdc..6b47b051d 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -149,6 +149,7 @@ Route::group(['middleware' => 'language'], function () {
Route::post('unzip', 'Modules\Item@unzip');
Route::post('install', 'Modules\Item@install');
Route::get('post/{alias}', 'Modules\Item@post');
+ Route::post('{alias}/reviews', 'Modules\Item@reviews');
Route::get('{alias}/uninstall', 'Modules\Item@uninstall');
Route::get('{alias}/enable', 'Modules\Item@enable');
Route::get('{alias}/disable', 'Modules\Item@disable');