Added app changelog pagination

This commit is contained in:
Cüneyt Şentürk 2021-05-31 14:22:20 +03:00
parent 067f7e5635
commit f4859b87e9
5 changed files with 138 additions and 1 deletions

View File

@ -329,6 +329,27 @@ class Item extends Controller
return redirect()->route('apps.app.show', $alias)->send(); return redirect()->route('apps.app.show', $alias)->send();
} }
public function releases($alias, Request $request)
{
$data = [
'query' => [
'page' => $request->get('page', 1),
]
];
$releases = $this->getModuleReleases($alias, $data);
$html = view('partials.modules.releases', compact('releases'))->render();
return response()->json([
'success' => true,
'error' => false,
'data' => $releases,
'message' => null,
'html' => $html,
]);
}
public function reviews($alias, Request $request) public function reviews($alias, Request $request)
{ {
$data = [ $data = [

View File

@ -72,6 +72,23 @@ trait Modules
return $documentation; return $documentation;
} }
public function getModuleReleases($alias, $data = [])
{
$key = 'apps.' . $alias . '.releases.' . $this->getDataKeyOfModules($data);
$releases = Cache::get($key);
if (!empty($releases)) {
return $releases;
}
$releases = static::getResponseData('GET', 'apps/' . $alias . '/releases', $data);
Cache::put($key, $releases, Date::now()->addHour());
return $releases;
}
public function getModuleReviews($alias, $data = []) public function getModuleReviews($alias, $data = [])
{ {
$key = 'apps.' . $alias . '.reviews.' . $this->getDataKeyOfModules($data); $key = 'apps.' . $alias . '.reviews.' . $this->getDataKeyOfModules($data);

View File

@ -32,11 +32,20 @@ const app = new Vue({
}, },
mounted() { mounted() {
this.onReleases(1);
this.onReviews(1); this.onReviews(1);
}, },
data: function () { data: function () {
return { return {
releases: {
status: false,
html: '',
pagination: {
current_page: 1,
last_page: 1
}
},
reviews: { reviews: {
status: false, status: false,
html: '', html: '',
@ -77,6 +86,24 @@ const app = new Vue({
location = path; location = path;
}, },
async onReleases(page) {
let releases_promise = Promise.resolve(window.axios.post(url + '/apps/' + app_slug + '/releases', {
page: page
}));
releases_promise.then(response => {
if (response.data.success) {
this.releases.status= true;
this.releases.html = response.data.html;
this.releases.pagination.current_page = page;
this.releases.pagination.last_page = response.data.data.last_page;
}
})
.catch(error => {
});
},
async onReviews(page) { async onReviews(page) {
let reviews_promise = Promise.resolve(window.axios.post(url + '/apps/' + app_slug + '/reviews', { let reviews_promise = Promise.resolve(window.axios.post(url + '/apps/' + app_slug + '/reviews', {
page: page page: page

View File

@ -104,7 +104,70 @@
@if ($module->changelog) @if ($module->changelog)
<div class="tab-pane fade" id="changelog"> <div class="tab-pane fade" id="changelog">
{!! $module->changelog !!} @php
$releases = $module->app_releases;
@endphp
<div id="releases" class="clearfix" v-if="releases.status" v-html="releases.html"></div>
<div id="releases" class="clearfix" v-else>
@include('partials.modules.releases')
</div>
@php
$release_first_item = count($releases->data) > 0 ? ($releases->current_page - 1) * $releases->per_page + 1 : null;
$release_last_item = count($releases->data) > 0 ? $release_first_item + count($releases->data) - 1 : null;
@endphp
@if (!empty($release_first_item))
@stack('pagination_start')
<div class="row mt-4">
<div class="col-md-6">
<span class="table-text d-lg-block">
{{ trans('pagination.showing', ['first' => $release_first_item, 'last' => $release_last_item, 'total' => $releases->total, 'type' => strtolower(trans('modules.tab.changelog'))]) }}
</span>
</div>
<div class="col-md-6">
<ul class="pagination float-right">
{{-- Previous Page Link --}}
<li class="page-item disabled" v-if="releases.pagination.current_page == 1">
<span class="page-link">&laquo;</span>
</li>
<li class="page-item" v-else>
<button type="button" class="page-link" @click="onReleases(releases.pagination.current_page - 1)" rel="prev">&laquo;</button>
</li>
{{-- Pagination Elements --}}
@for ($page = 1; $page <= $releases->last_page; $page++)
<li class="page-item" :class="[{'active': releases.pagination.current_page == {{ $page }}}]" v-if="releases.pagination.current_page == {{ $page }}">
<span class="page-link">{{ $page }}</span>
</li>
<li class="page-item" v-else>
<button type="button" class="page-link" @click="onReleases({{ $page }})" data-page="{{ $page }}">{{ $page }}</button>
</li>
@endfor
{{-- Next Page Link --}}
<li class="page-item" v-if="releases.pagination.last_page != releases.pagination.current_page">
<button type="button" class="page-link" @click="onReleases(releases.pagination.current_page + 1)" rel="next">&raquo;</button>
</li>
<li class="page-item disabled" v-else>
<span class="page-link">&raquo;</span>
</li>
</ul>
</div>
</div>
@stack('pagination_end')
@else
<div class="row">
<div class="col-md-12">
<small>{{ trans('general.no_records') }}</small>
</div>
</div>
@endif
</div> </div>
@endif @endif

View File

@ -0,0 +1,9 @@
<div id="releases-items">
@if (!empty($releases))
@foreach($releases->data as $release)
<p>{{ $release->version }} - @date($release->released_at)</p>
{!! $release->changelog !!}
@endforeach
@endif
</div>