somewhere

This commit is contained in:
Swift
2023-08-17 13:05:51 +03:30
parent 30c7eb0e7b
commit 53843207cc
429 changed files with 117489 additions and 1 deletions
+143
View File
@@ -0,0 +1,143 @@
<template>
<div class="download-details--page page">
<section class="s1">
<div class="container">
<div class="row">
<div class="col-12">
<div class="item">
<div class="title">
<h1>{{ download.title }}</h1>
</div>
<div class="description">
<div class="ck-content" v-html="download.description"></div>
<div class="imgBox">
<img :src="download.image" :alt="download.title" />
</div>
</div>
<div class="download">
<div class="row">
<div class="col-12 mb-4">
<h3>دانلود با لینک مستقیم:</h3>
</div>
<div v-if="filteredFilesByOs('windows')" class="col-12 col-md-4 mb-5">
<div class="title">
<img src="/assets/img/download/windows.png" alt="نسخه ویندوز" />
<h3>نسخه ویندوز</h3>
</div>
<ul>
<li v-for="item in filteredFilesByOs('windows')" :key="item._id">
<a :href="item.file" download target="_blank">
<i class="fal fa-cloud-download"></i>
<span>{{ item.name }}</span>
</a>
</li>
</ul>
</div>
<div v-if="filteredFilesByOs('mac').length" class="col-12 col-md-4 mb-5">
<div class="title">
<img src="/assets/img/download/mac.png" alt="نسخه مک" />
<h3>نسخه مک</h3>
</div>
<ul>
<li v-for="item in filteredFilesByOs('mac')" :key="item._id">
<a :href="item.file" download target="_blank">
<i class="fal fa-cloud-download"></i>
<span>{{ item.name }}</span>
</a>
</li>
</ul>
</div>
<div v-if="filteredFilesByOs('linux').length" class="col-12 col-md-4 mb-5">
<div class="title">
<img src="/assets/img/download/linux.png" alt="نسخه لینوکس" />
<h3>نسخه لینوکس</h3>
</div>
<ul>
<li v-for="item in filteredFilesByOs('linux')" :key="item._id">
<a :href="item.file" download target="_blank">
<i class="fal fa-cloud-download"></i>
<span>{{ item.name }}</span>
</a>
</li>
</ul>
</div>
<div v-if="filteredFilesByOs('android').length" class="col-12 col-md-4 mb-5">
<div class="title">
<img src="/assets/img/download/android.svg" alt="نسخه اندروید" />
<h3>نسخه اندروید</h3>
</div>
<ul>
<li v-for="item in filteredFilesByOs('android')" :key="item._id">
<a :href="item.file" download target="_blank">
<i class="fal fa-cloud-download"></i>
<span>{{ item.name }}</span>
</a>
</li>
</ul>
</div>
<div v-if="filteredFilesByOs('ios').length" class="col-12 col-md-4 mb-5">
<div class="title">
<img src="/assets/img/download/ios.svg" alt="نسخه iOS" />
<h3>نسخه iOS</h3>
</div>
<ul>
<li v-for="item in filteredFilesByOs('ios')" :key="item._id">
<a :href="item.file" download target="_blank">
<i class="fal fa-cloud-download"></i>
<span>{{ item.name }}</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="zip-pass">
<p>پسورد فایل فشرده: www.asan-service.com</p>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</template>
<script>
export default {
name: 'DownloadDetailesPage',
async asyncData({ $axios, params, error }) {
try {
const download = await $axios.get(`/api/public/downloads/${encodeURIComponent(params.item)}`)
return {
download: download.data
}
} catch (e) {
error({ status: 404, message: 'Page not found' })
}
},
data() {
return {
download: null
}
},
head() {
return {
title: 'دانلود ' + this.download.title,
meta: [
{
hid: 'description',
name: 'description',
content: this.download.title
}
]
}
},
methods: {
filteredFilesByOs(os) {
return this.download.files.filter(item => item.os === os)
}
}
}
</script>
+185
View File
@@ -0,0 +1,185 @@
<template>
<div class="download--page page">
<hero title="دانلود ها" />
<section class="s1">
<div class="container">
<div class="row">
<div class="col-12">
<div class="filters">
<ul>
<nuxt-link tag="li" :to="{ name: 'download', query: { category: 'all', page: 1 } }">
<a :class="$route.query.category === 'all' ? 'active' : null">همه</a>
</nuxt-link>
<nuxt-link
v-for="item in dCategories"
:key="item._id"
tag="li"
:to="{ name: 'download', query: { category: item.name, page: 1 } }"
>
<a :class="$route.query.category === item.name ? 'active' : null">{{ item.name }}</a>
</nuxt-link>
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="s2">
<div class="container">
<div class="row align-items-stretch">
<div v-for="item in topPartList" :key="item._id" class="col-12 col-xxl-6 mb-3">
<div class="item fadeInAnim">
<div class="imgBox">
<img :src="item.image" :alt="item.title" />
</div>
<div class="txtBox">
<h2>
<b>{{ item.title }}</b>
<span>{{ categoryName(item.category) }}</span>
</h2>
<p>{{ item.short_description }}</p>
<nuxt-link :to="{ name: 'download-item+', params: { item: item.title } }" class="btn btn-primary"
>ادامه مطلب</nuxt-link
>
</div>
</div>
</div>
<!-- untrack -->
<div v-if="downloads.docs.length >= 4" class="col-12">
<div class="untrack">
<h3>جدیدترین ها:</h3>
<div class="row">
<div v-for="item in downloads_newest" :key="item._id + '_special'" class="col-12 col-lg-4 mb-3 mb-lg-0">
<div class="latest fadeInAnim">
<div class="normal">
<img :src="item.image" :alt="item.title" />
<h2>{{ item.title }}</h2>
</div>
<div class="hover">
<h2>{{ item.title }}</h2>
<p>{{ item.short_description }}</p>
<nuxt-link :to="{ name: 'download-item+', params: { item: item.title } }" class="btn btn-primary"
>ادامه مطلب
</nuxt-link>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- untrack -->
<div v-for="item in bottomPartList" :key="item._id" class="col-12 col-xxl-6 mb-3">
<div class="item fadeInAnim">
<div class="imgBox">
<img :src="item.image" :alt="item.title" />
</div>
<div class="txtBox">
<h2>
<b>{{ item.title }}</b>
<span>{{ categoryName(item.category) }}</span>
</h2>
<p>{{ item.short_description }}</p>
<nuxt-link :to="{ name: 'download-item+', params: { item: item.title } }" class="btn btn-primary"
>ادامه مطلب</nuxt-link
>
</div>
</div>
</div>
<div v-if="!downloads.docs.length" class="col-12 no-post">
<h2>چیزی برای دانلود در این صفحه وجود نداد.</h2>
</div>
</div>
</div>
</section>
<section class="s3">
<div class="row">
<div class="col-12">
<el-pagination
v-if="paginate"
layout="prev, pager, next"
:current-page="Number($route.query.page)"
:page-count="Number(downloads.totalPages)"
@current-change="pageNumber"
>
</el-pagination>
</div>
</div>
</section>
</div>
</template>
<script>
import FadeInAnimation from '~/mixins/FadeInAnimation'
export default {
name: 'DownloadsListPage',
mixins: [FadeInAnimation],
async asyncData({ $axios, query, error }) {
try {
const allData = await Promise.all([
// fetch download categories
$axios.get(`/api/public/dCategory`),
// fetch downloads
$axios.get(`/api/public/downloads/page/${encodeURIComponent(query.category)}/${query.page}`)
])
const dCategories = allData[0]
const downloads = allData[1]
let downloads_newest = []
if (downloads.data.docs.length >= 4) downloads_newest = await $axios.get(`/api/public/downloads-newest`)
return {
dCategories: dCategories.data,
downloads: downloads.data,
downloads_newest: downloads_newest.data || downloads_newest
}
} catch (e) {
error({ status: 404, message: 'There is a problem here' })
}
},
data() {
return {
dCategories: null,
downloads: null,
downloads_newest: null,
partSize: 4
}
},
head() {
return {
title: 'آسان سرویس | دانلود ها'
}
},
computed: {
paginate() {
return this.downloads.totalPages > 1
},
pageQueries() {
return this.$route.query.page + this.$route.query.category
},
topPartList() {
return this.downloads.docs.filter((item, index) => index < this.partSize)
},
bottomPartList() {
return this.downloads.docs.filter((item, index) => index >= this.partSize)
}
},
watch: {
pageQueries(newVal, oldVal) {
this.$nuxt.refresh()
$(window).scrollTop(0)
}
},
methods: {
pageNumber(val) {
this.$router.push({ name: 'download', query: { category: this.$route.query.category, page: val } })
},
categoryName(id) {
return this.dCategories.find(item => item._id === id)?.name
}
}
}
</script>