Merge pull request #495 from cuneytsenturk/1.3-dev
Added app store pagination
This commit is contained in:
@@ -302,4 +302,27 @@ class Item extends Controller
|
|||||||
|
|
||||||
return redirect('apps/' . $alias);
|
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,
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,15 @@ class Tiles extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkApiToken();
|
$this->checkApiToken();
|
||||||
|
|
||||||
$data = $this->getModulesByCategory($alias);
|
$page = request('page', 1);
|
||||||
|
|
||||||
|
$request = [
|
||||||
|
'query' => [
|
||||||
|
'page' => $page,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$data = $this->getModulesByCategory($alias, $request);
|
||||||
|
|
||||||
$title = $data->category->name;
|
$title = $data->category->name;
|
||||||
$modules = $data->modules;
|
$modules = $data->modules;
|
||||||
@@ -41,8 +49,16 @@ class Tiles extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkApiToken();
|
$this->checkApiToken();
|
||||||
|
|
||||||
|
$page = request('page', 1);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'query' => [
|
||||||
|
'page' => $page,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
$title = trans('modules.top_paid');
|
$title = trans('modules.top_paid');
|
||||||
$modules = $this->getPaidModules();
|
$modules = $this->getPaidModules($data);
|
||||||
$installed = Module::all()->pluck('status', 'alias')->toArray();
|
$installed = Module::all()->pluck('status', 'alias')->toArray();
|
||||||
|
|
||||||
return view('modules.tiles.index', compact('title', 'modules', 'installed'));
|
return view('modules.tiles.index', compact('title', 'modules', 'installed'));
|
||||||
@@ -57,8 +73,16 @@ class Tiles extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkApiToken();
|
$this->checkApiToken();
|
||||||
|
|
||||||
|
$page = request('page', 1);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'query' => [
|
||||||
|
'page' => $page,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
$title = trans('modules.new');
|
$title = trans('modules.new');
|
||||||
$modules = $this->getNewModules();
|
$modules = $this->getNewModules($data);
|
||||||
$installed = Module::all()->pluck('status', 'alias')->toArray();
|
$installed = Module::all()->pluck('status', 'alias')->toArray();
|
||||||
|
|
||||||
return view('modules.tiles.index', compact('title', 'modules', 'installed'));
|
return view('modules.tiles.index', compact('title', 'modules', 'installed'));
|
||||||
@@ -73,8 +97,16 @@ class Tiles extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkApiToken();
|
$this->checkApiToken();
|
||||||
|
|
||||||
|
$page = request('page', 1);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'query' => [
|
||||||
|
'page' => $page,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
$title = trans('modules.top_free');
|
$title = trans('modules.top_free');
|
||||||
$modules = $this->getFreeModules();
|
$modules = $this->getFreeModules($data);
|
||||||
$installed = Module::all()->pluck('status', 'alias')->toArray();
|
$installed = Module::all()->pluck('status', 'alias')->toArray();
|
||||||
|
|
||||||
return view('modules.tiles.index', compact('title', 'modules', 'installed'));
|
return view('modules.tiles.index', compact('title', 'modules', 'installed'));
|
||||||
@@ -90,10 +122,12 @@ class Tiles extends Controller
|
|||||||
$this->checkApiToken();
|
$this->checkApiToken();
|
||||||
|
|
||||||
$keyword = $request['keyword'];
|
$keyword = $request['keyword'];
|
||||||
|
$page = request('page', 1);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'query' => [
|
'query' => [
|
||||||
'keyword' => $keyword,
|
'keyword' => $keyword,
|
||||||
|
'page' => $page,
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,17 @@ trait Modules
|
|||||||
return [];
|
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()
|
public function getCategories()
|
||||||
{
|
{
|
||||||
$response = $this->getRemote('apps/categories');
|
$response = $this->getRemote('apps/categories');
|
||||||
@@ -68,9 +79,9 @@ trait Modules
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getModulesByCategory($alias)
|
public function getModulesByCategory($alias, $data = [])
|
||||||
{
|
{
|
||||||
$response = $this->getRemote('apps/categories/' . $alias);
|
$response = $this->getRemote('apps/categories/' . $alias, 'GET', $data);
|
||||||
|
|
||||||
if ($response && ($response->getStatusCode() == 200)) {
|
if ($response && ($response->getStatusCode() == 200)) {
|
||||||
return json_decode($response->getBody())->data;
|
return json_decode($response->getBody())->data;
|
||||||
|
|||||||
10
public/css/app.css
vendored
10
public/css/app.css
vendored
@@ -676,4 +676,12 @@ input[type="number"] {
|
|||||||
|
|
||||||
.pull-right.rating {
|
.pull-right.rating {
|
||||||
margin-top: -30px;
|
margin-top: -30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pager {
|
||||||
|
margin: inherit !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pager li>a, .pager li>span {
|
||||||
|
border-radius: 3px !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<h3>{{ trans('modules.top_paid') }}</h3>
|
<h3>{{ trans('modules.top_paid') }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@foreach ($paid as $module)
|
@foreach ($paid->data as $module)
|
||||||
@include('partials.modules.item')
|
@include('partials.modules.item')
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<h3>{{ trans('modules.new') }}</h3>
|
<h3>{{ trans('modules.new') }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@foreach ($new as $module)
|
@foreach ($new->data as $module)
|
||||||
@include('partials.modules.item')
|
@include('partials.modules.item')
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
<h3>{{ trans('modules.top_free') }}</h3>
|
<h3>{{ trans('modules.top_free') }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@foreach ($free as $module)
|
@foreach ($free->data as $module)
|
||||||
@include('partials.modules.item')
|
@include('partials.modules.item')
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -61,32 +61,8 @@
|
|||||||
@endif
|
@endif
|
||||||
<div class="tab-pane" id="review">
|
<div class="tab-pane" id="review">
|
||||||
<div id="reviews" class="clearfix">
|
<div id="reviews" class="clearfix">
|
||||||
@if($module->reviews)
|
@if(!$module->reviews)
|
||||||
@foreach($module->reviews as $review)
|
{{ trans('modules.reviews.na') }}
|
||||||
<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') }}
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -216,6 +192,10 @@
|
|||||||
var path = '';
|
var path = '';
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
@if($module->reviews)
|
||||||
|
getReviews('', '1');
|
||||||
|
@endif
|
||||||
|
|
||||||
$('#install-module').on('click', function(e) {
|
$('#install-module').on('click', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
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() {
|
function next() {
|
||||||
data = step.shift();
|
data = step.shift();
|
||||||
|
|
||||||
@@ -320,5 +310,27 @@
|
|||||||
|
|
||||||
$('#modal-installation').modal('show');
|
$('#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>
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|||||||
@@ -17,9 +17,19 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if ($modules)
|
@if ($modules)
|
||||||
@foreach ($modules as $module)
|
@foreach ($modules->data as $module)
|
||||||
@include('partials.modules.item')
|
@include('partials.modules.item')
|
||||||
@endforeach
|
@endforeach
|
||||||
|
<div class="col-md-12 no-padding-left">
|
||||||
|
<ul class="pager nomargin">
|
||||||
|
@if ($modules->current_page < $modules->last_page)
|
||||||
|
<li class="next"><a href="{{ url(request()->path()) }}?page={{ $modules->current_page + 1 }}" class="btn btn-default btn-sm">{{ trans('pagination.next') }}</a></li>
|
||||||
|
@endif
|
||||||
|
@if ($modules->current_page > 1)
|
||||||
|
<li class="previous"><a href="{{ url(request()->path()) }}?page={{ $modules->current_page - 1 }}" class="btn btn-default btn-sm">{{ trans('pagination.previous') }}</a></li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="box box-success">
|
<div class="box box-success">
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
@@ -35,4 +45,4 @@
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
68
resources/views/partials/modules/reviews.blade.php
Normal file
68
resources/views/partials/modules/reviews.blade.php
Normal 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>«</span></li>
|
||||||
|
@else
|
||||||
|
<li><a href="{{ url(request()->path()) }}?page={{ $reviews->current_page - 1 }}" rel="prev">«</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">»</a></li>
|
||||||
|
@else
|
||||||
|
<li class="disabled"><span>»</span></li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="pull-left">
|
||||||
|
<small>{{ trans('general.no_records') }}</small>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@stack('pagination_end')
|
||||||
|
</div>
|
||||||
@@ -149,6 +149,7 @@ Route::group(['middleware' => 'language'], function () {
|
|||||||
Route::post('unzip', 'Modules\Item@unzip');
|
Route::post('unzip', 'Modules\Item@unzip');
|
||||||
Route::post('install', 'Modules\Item@install');
|
Route::post('install', 'Modules\Item@install');
|
||||||
Route::get('post/{alias}', 'Modules\Item@post');
|
Route::get('post/{alias}', 'Modules\Item@post');
|
||||||
|
Route::post('{alias}/reviews', 'Modules\Item@reviews');
|
||||||
Route::get('{alias}/uninstall', 'Modules\Item@uninstall');
|
Route::get('{alias}/uninstall', 'Modules\Item@uninstall');
|
||||||
Route::get('{alias}/enable', 'Modules\Item@enable');
|
Route::get('{alias}/enable', 'Modules\Item@enable');
|
||||||
Route::get('{alias}/disable', 'Modules\Item@disable');
|
Route::get('{alias}/disable', 'Modules\Item@disable');
|
||||||
|
|||||||
Reference in New Issue
Block a user