App review add pagination

This commit is contained in:
cuneytsenturk 2018-09-20 18:35:24 +03:00
parent 2ea4722dcf
commit 034c5b828c
5 changed files with 141 additions and 26 deletions

View File

@ -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,
]);
}
}

View File

@ -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');

View File

@ -61,32 +61,8 @@
@endif
<div class="tab-pane" id="review">
<div id="reviews" class="clearfix">
@if($module->reviews)
@foreach($module->reviews as $review)
<div class="post">
<div class="user-block">
<img class="img-circle img-bordered-sm" src="{{ $review->thumb }}" alt="user image">
<span class="username">
{{ $review->author }}
<span class="pull-right">
@for($i = 1; $i <= $review->rating; $i++)
<i class="fa fa-star"></i>
@endfor
@for($i = $review->rating; $i < 5; $i++)
<i class="fa fa-star-o"></i>
@endfor
</span>
</span>
<span class="description">{{ \Carbon\Carbon::parse($review->created_at)->format('F d, Y \a\t G:ia') }}</span>
</div>
<!-- /.user-block -->
<p>
{!! nl2br($review->text) !!}
</p>
</div>
@endforeach
@else
{{ trans('modules.reviews.na') }}
@if(!$module->reviews)
{{ trans('modules.reviews.na') }}
@endif
</div>
@ -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('<div id="loading" class="text-center"><i class="fa fa-spinner fa-spin fa-5x checkout-spin"></i></div>');
},
complete : function() {
$('#loading').remove();
},
success: function(json) {
if (json['success']) {
$('#reviews #review-items').remove();
$('#reviews').append(json['html']);
}
}
});
}
</script>
@endpush

View File

@ -0,0 +1,68 @@
<div id="review-items">
@foreach($reviews->data as $review)
<div class="post">
<div class="user-block">
<img class="img-circle img-bordered-sm" src="{{ $review->thumb }}" alt="{{ $review->author }}">
<span class="username">
{{ $review->author }}
<span class="pull-right">
@for($i = 1; $i <= $review->rating; $i++)
<i class="fa fa-star"></i>
@endfor
@for($i = $review->rating; $i < 5; $i++)
<i class="fa fa-star-o"></i>
@endfor
</span>
</span>
<span class="description">{{ \Carbon\Carbon::parse($review->created_at)->format('F d, Y') }}</span>
</div>
<!-- /.user-block -->
<p>
{!! nl2br($review->text) !!}
</p>
</div>
@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)
<div class="pull-left" style="margin-top: 7px;">
<small>{{ trans('pagination.showing', ['first' => $review_first_item, 'last' => $review_last_item, 'total' => $reviews->total, 'type' => strtolower(trans('modules.tab.reviews'))]) }}</small>
</div>
<div class="pull-right">
<ul class="pagination pagination-sm no-margin">
{{-- Previous Page Link --}}
@if ($reviews->current_page <= 1)
<li class="disabled"><span>&laquo;</span></li>
@else
<li><a href="{{ url(request()->path()) }}?page={{ $reviews->current_page - 1 }}" rel="prev">&laquo;</a></li>
@endif
{{-- Pagination Elements --}}
@for ($page = 1; $page <= $reviews->last_page; $page++)
@if ($page == $reviews->current_page)
<li class="active"><span>{{ $page }}</span></li>
@else
<li><a href="{{ url(request()->path()) }}?page={{ $page }}" data-page="{{ $page }}">{{ $page }}</a></li>
@endif
@endfor
{{-- Next Page Link --}}
@if ($reviews->current_page != 1)
<li><a href="{{ url(request()->path()) }}?page={{ $reviews->current_page + 1 }}" rel="next">&raquo;</a></li>
@else
<li class="disabled"><span>&raquo;</span></li>
@endif
</ul>
</div>
@else
<div class="pull-left">
<small>{{ trans('general.no_records') }}</small>
</div>
@endif
@stack('pagination_end')
</div>

View File

@ -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');