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); | ||||
|     } | ||||
|  | ||||
|     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(); | ||||
|  | ||||
|         $data = $this->getModulesByCategory($alias); | ||||
|         $page = request('page', 1); | ||||
|  | ||||
|         $request = [ | ||||
|             'query' => [ | ||||
|                 'page' => $page, | ||||
|             ] | ||||
|         ]; | ||||
|  | ||||
|         $data = $this->getModulesByCategory($alias, $request); | ||||
|  | ||||
|         $title = $data->category->name; | ||||
|         $modules = $data->modules; | ||||
| @@ -41,8 +49,16 @@ class Tiles extends Controller | ||||
|     { | ||||
|         $this->checkApiToken(); | ||||
|  | ||||
|         $page = request('page', 1); | ||||
|  | ||||
|         $data = [ | ||||
|             'query' => [ | ||||
|                 'page' => $page, | ||||
|             ] | ||||
|         ]; | ||||
|  | ||||
|         $title = trans('modules.top_paid'); | ||||
|         $modules = $this->getPaidModules(); | ||||
|         $modules = $this->getPaidModules($data); | ||||
|         $installed = Module::all()->pluck('status', 'alias')->toArray(); | ||||
|  | ||||
|         return view('modules.tiles.index', compact('title', 'modules', 'installed')); | ||||
| @@ -57,8 +73,16 @@ class Tiles extends Controller | ||||
|     { | ||||
|         $this->checkApiToken(); | ||||
|  | ||||
|         $page = request('page', 1); | ||||
|  | ||||
|         $data = [ | ||||
|             'query' => [ | ||||
|                 'page' => $page, | ||||
|             ] | ||||
|         ]; | ||||
|  | ||||
|         $title = trans('modules.new'); | ||||
|         $modules = $this->getNewModules(); | ||||
|         $modules = $this->getNewModules($data); | ||||
|         $installed = Module::all()->pluck('status', 'alias')->toArray(); | ||||
|  | ||||
|         return view('modules.tiles.index', compact('title', 'modules', 'installed')); | ||||
| @@ -73,8 +97,16 @@ class Tiles extends Controller | ||||
|     { | ||||
|         $this->checkApiToken(); | ||||
|  | ||||
|         $page = request('page', 1); | ||||
|  | ||||
|         $data = [ | ||||
|             'query' => [ | ||||
|                 'page' => $page, | ||||
|             ] | ||||
|         ]; | ||||
|  | ||||
|         $title = trans('modules.top_free'); | ||||
|         $modules = $this->getFreeModules(); | ||||
|         $modules = $this->getFreeModules($data); | ||||
|         $installed = Module::all()->pluck('status', 'alias')->toArray(); | ||||
|  | ||||
|         return view('modules.tiles.index', compact('title', 'modules', 'installed')); | ||||
| @@ -90,10 +122,12 @@ class Tiles extends Controller | ||||
|         $this->checkApiToken(); | ||||
|  | ||||
|         $keyword = $request['keyword']; | ||||
|         $page = request('page', 1); | ||||
|  | ||||
|         $data = [ | ||||
|             'query' => [ | ||||
|                 'keyword' => $keyword, | ||||
|                 'page' => $page, | ||||
|             ] | ||||
|         ]; | ||||
|  | ||||
|   | ||||
| @@ -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'); | ||||
| @@ -68,9 +79,9 @@ trait Modules | ||||
|         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)) { | ||||
|             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 { | ||||
|     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> | ||||
|             </div> | ||||
|  | ||||
|             @foreach ($paid as $module) | ||||
|             @foreach ($paid->data as $module) | ||||
|                 @include('partials.modules.item') | ||||
|             @endforeach | ||||
|         </div> | ||||
| @@ -26,7 +26,7 @@ | ||||
|                 <h3>{{ trans('modules.new') }}</h3> | ||||
|             </div> | ||||
|  | ||||
|             @foreach ($new as $module) | ||||
|             @foreach ($new->data as $module) | ||||
|                 @include('partials.modules.item') | ||||
|             @endforeach | ||||
|         </div> | ||||
| @@ -36,7 +36,7 @@ | ||||
|                 <h3>{{ trans('modules.top_free') }}</h3> | ||||
|             </div> | ||||
|  | ||||
|             @foreach ($free as $module) | ||||
|             @foreach ($free->data as $module) | ||||
|                 @include('partials.modules.item') | ||||
|             @endforeach | ||||
|         </div> | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -17,9 +17,19 @@ | ||||
|             </div> | ||||
|  | ||||
|             @if ($modules) | ||||
|                 @foreach ($modules as $module) | ||||
|                 @foreach ($modules->data as $module) | ||||
|                     @include('partials.modules.item') | ||||
|                 @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 | ||||
|                 <div class="box box-success"> | ||||
|                     <div class="box-body"> | ||||
| @@ -35,4 +45,4 @@ | ||||
|             @endif | ||||
|         </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('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'); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user