Added PG site search function and enabled site search bar. Added Full Porn network assets.
|
@ -1,11 +1,39 @@
|
|||
<template>
|
||||
<div class="networks">
|
||||
<input
|
||||
:placeholder="`Find ${siteCount} sites in ${networks.length} networks`"
|
||||
<form
|
||||
class="search"
|
||||
@submit.prevent="searchSites"
|
||||
>
|
||||
<input
|
||||
v-model="query"
|
||||
:placeholder="`Find ${siteCount} sites in ${networks.length} networks`"
|
||||
class="query"
|
||||
@input="searchSites"
|
||||
>
|
||||
|
||||
<div class="network-tiles">
|
||||
<button
|
||||
type="submit"
|
||||
class="search-button"
|
||||
><Icon icon="search" /></button>
|
||||
</form>
|
||||
|
||||
<div
|
||||
v-if="query.length"
|
||||
class="network-tiles"
|
||||
>
|
||||
<Site
|
||||
v-for="site in searchResults"
|
||||
:key="`site-tile-${site.slug}`"
|
||||
:site="site"
|
||||
/>
|
||||
|
||||
<span v-if="searchResults.length === 0">No results for "{{ query }}"</span>
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="query.length === 0"
|
||||
class="network-tiles"
|
||||
>
|
||||
<Network
|
||||
v-for="network in networks"
|
||||
:key="`network-tile-${network.slug}`"
|
||||
|
@ -17,6 +45,16 @@
|
|||
|
||||
<script>
|
||||
import Network from '../tile/network.vue';
|
||||
import Site from '../tile/site.vue';
|
||||
|
||||
async function searchSites() {
|
||||
this.searchResults = await this.$store.dispatch('searchSites', {
|
||||
query: this.query,
|
||||
limit: 20,
|
||||
});
|
||||
|
||||
console.log(this.searchResults);
|
||||
}
|
||||
|
||||
async function mounted() {
|
||||
this.networks = await this.$store.dispatch('fetchNetworks');
|
||||
|
@ -30,17 +68,23 @@ function siteCount() {
|
|||
export default {
|
||||
components: {
|
||||
Network,
|
||||
Site,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
networks: [],
|
||||
query: '',
|
||||
pageTitle: null,
|
||||
networks: [],
|
||||
searchResults: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
siteCount,
|
||||
},
|
||||
mounted,
|
||||
methods: {
|
||||
searchSites,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -52,8 +96,13 @@ export default {
|
|||
}
|
||||
|
||||
.search {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
max-width: 40rem;
|
||||
}
|
||||
|
||||
.query {
|
||||
flex-grow: 1;
|
||||
box-sizing: border-box;
|
||||
padding: 1rem;
|
||||
border: none;
|
||||
|
@ -68,6 +117,24 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
.search-button {
|
||||
padding: 1rem;
|
||||
background: none;
|
||||
border: none;
|
||||
|
||||
.icon {
|
||||
fill: $shadow;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
|
||||
.icon {
|
||||
fill: $primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.network-tiles {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
|
||||
|
|
|
@ -72,21 +72,37 @@ function initSitesActions(store, _router) {
|
|||
return sites;
|
||||
}
|
||||
|
||||
/*
|
||||
async function fetchSiteReleases({ _commit }, siteId) {
|
||||
const releases = await get(`/sites/${siteId}/releases`, {
|
||||
filter: store.state.ui.filter,
|
||||
after: store.getters.after,
|
||||
before: store.getters.before,
|
||||
async function searchSites({ _commit }, { query, limit = 20 }) {
|
||||
const { sites } = await graphql(`
|
||||
query SearchSites(
|
||||
$query: String!
|
||||
$limit:Int = 20,
|
||||
) {
|
||||
sites: searchSites(
|
||||
search: $query,
|
||||
first: $limit
|
||||
) {
|
||||
name
|
||||
slug
|
||||
url
|
||||
network {
|
||||
name
|
||||
slug
|
||||
url
|
||||
}
|
||||
}
|
||||
}
|
||||
`, {
|
||||
query,
|
||||
limit,
|
||||
});
|
||||
|
||||
return releases;
|
||||
return sites;
|
||||
}
|
||||
*/
|
||||
|
||||
return {
|
||||
fetchSites,
|
||||
// fetchSiteReleases,
|
||||
searchSites,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -460,6 +460,14 @@ exports.up = knex => Promise.resolve()
|
|||
COMMENT ON COLUMN actors.height IS E'@omit read,update,create,delete,all,many';
|
||||
COMMENT ON COLUMN actors.weight IS E'@omit read,update,create,delete,all,many';
|
||||
|
||||
CREATE FUNCTION search_sites(search text) RETURNS SETOF sites AS $$
|
||||
SELECT * FROM sites
|
||||
WHERE
|
||||
name ILIKE ('%' || search || '%') OR
|
||||
slug ILIKE ('%' || search || '%') OR
|
||||
url ILIKE ('%' || search || '%')
|
||||
$$ LANGUAGE SQL STABLE;
|
||||
|
||||
/*
|
||||
CREATE VIEW releases_actors_sortable AS
|
||||
SELECT releases_actors.*, actors.gender, actors.name, actors.birthdate FROM releases_actors
|
||||
|
|
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 111 KiB |
|
@ -72,24 +72,12 @@ const networks = [
|
|||
url: 'https://ddfnetwork.com',
|
||||
description: 'European porn videos hub with exclusive VR, 4K and full HD XXX videos and hot sex photos of Europes finest porn star babes.',
|
||||
},
|
||||
{
|
||||
slug: 'famedigital',
|
||||
name: 'Fame Digital',
|
||||
url: 'https://www.famedigital.com',
|
||||
description: 'Watch and download thousands of the best porn videos at FameDigital.com, the largest porn network on the web! The hottest teens, MILFs and more pornstars are all here!',
|
||||
},
|
||||
{
|
||||
slug: 'digitalplayground',
|
||||
name: 'Digital Playground',
|
||||
url: 'https://www.digitalplayground.com',
|
||||
description: 'DigitalPlayground.com is the leader in high quality adult blockbuster movies and award winning sex parodies that feature the most exclusive pornstars online! Adult Film Database of adult movies.',
|
||||
},
|
||||
{
|
||||
slug: 'metrohd',
|
||||
name: 'Metro HD',
|
||||
url: 'https://www.metrohd.com',
|
||||
description: 'Checkout MetroHD official pornsite featuring top rated pornstars and XXX videos.',
|
||||
},
|
||||
{
|
||||
slug: 'dogfartnetwork',
|
||||
name: 'Dogfart Network',
|
||||
|
@ -106,7 +94,12 @@ const networks = [
|
|||
slug: 'fantasymassage',
|
||||
name: 'Fantasy Massage',
|
||||
url: 'https://www.fantasymassage.com',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
slug: 'famedigital',
|
||||
name: 'Fame Digital',
|
||||
url: 'https://www.famedigital.com',
|
||||
description: 'Watch and download thousands of the best porn videos at FameDigital.com, the largest porn network on the web! The hottest teens, MILFs and more pornstars are all here!',
|
||||
},
|
||||
{
|
||||
slug: 'fakehub',
|
||||
|
@ -114,6 +107,12 @@ const networks = [
|
|||
url: 'https://www.fakehub.com',
|
||||
description: 'Wherever they go, there is porn. Hospital, Taxis, Casting… Maybe fucking to a fake cop, fake agent or fake taxi driver. And we record it all.',
|
||||
},
|
||||
{
|
||||
slug: 'fullpornnetwork',
|
||||
name: 'Full Porn Network',
|
||||
url: 'https://www.fullpornnetwork.com',
|
||||
description: 'FullPornNetwork.com is the latest and greatest for one stop shop porn sites. Check out the expanding library of the multi-site network. All of fan\'s favorite content from ANALIZED.COM, DTFsluts.com, YourMomDoesPorn.com and many more. Give die hard porn fans access to an array of premium content available in 4k and 1080p. Full access included streaming hd and unlimited downloads. Be exclusive, be a member to FullPornNetwork.com Today.',
|
||||
},
|
||||
{
|
||||
slug: 'girlsway',
|
||||
name: 'Girlsway',
|
||||
|
@ -160,6 +159,12 @@ const networks = [
|
|||
url: 'https://www.men.com',
|
||||
description: 'Check out the best gay porn site on the net with daily updates, award-winning original series, exclusive Men.com models and over 800 of the hottest guys in gay porn.',
|
||||
},
|
||||
{
|
||||
slug: 'metrohd',
|
||||
name: 'Metro HD',
|
||||
url: 'https://www.metrohd.com',
|
||||
description: 'Checkout MetroHD official pornsite featuring top rated pornstars and XXX videos.',
|
||||
},
|
||||
{
|
||||
slug: 'mikeadriano',
|
||||
name: 'Mike Adriano',
|
||||
|
|
|
@ -1842,6 +1842,122 @@ const sites = [
|
|||
photos: 'https://www.fantasymassage.com/en/photo',
|
||||
},
|
||||
},
|
||||
// FULL PORN NETWORK
|
||||
{
|
||||
slug: 'analbbc',
|
||||
name: 'Anal BBC',
|
||||
url: 'https://analbbc.com/',
|
||||
tags: ['anal', 'bbc'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'analviolation',
|
||||
name: 'Anal Violation',
|
||||
url: 'https://analviolation.com/',
|
||||
tags: ['anal'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'analized',
|
||||
name: 'ANALIZED',
|
||||
url: 'https://analized.com/',
|
||||
tags: ['anal'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'baddaddypov',
|
||||
name: 'Bad Daddy POV',
|
||||
url: 'https://baddaddypov.com/',
|
||||
tags: ['pov', 'family'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'dtfsluts',
|
||||
name: 'DTF Sluts',
|
||||
url: 'https://dtfsluts.com/',
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'girlfaction',
|
||||
name: 'Girlfaction',
|
||||
url: 'https://girlfaction.com/',
|
||||
tags: ['lesbian'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'hergape',
|
||||
name: 'Her Gape',
|
||||
url: 'https://hergape.com/',
|
||||
tags: ['anal'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'homemadeanalwhores',
|
||||
name: 'Homemade Anal Whores',
|
||||
url: 'https://homemadeanalwhores.com/',
|
||||
tags: ['anal'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'jamesdeen',
|
||||
name: 'James Deen',
|
||||
url: 'https://jamesdeen.com/',
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'onlyprince',
|
||||
name: 'Only Prince',
|
||||
url: 'https://onlyprince.com/',
|
||||
tags: ['bbc'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'pervertgallery',
|
||||
name: 'Pervert Gallery',
|
||||
url: 'http://pervertgallery.com/',
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'povperverts',
|
||||
name: 'POV Perverts',
|
||||
url: 'http://povperverts.net/',
|
||||
tags: ['pov'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'teenageanalsluts',
|
||||
name: 'Teenage Anal Sluts',
|
||||
url: 'https://teenageanalsluts.com/',
|
||||
tags: ['anal'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'twistedvisual',
|
||||
name: 'Twisted Visual',
|
||||
url: 'https://twistedvisual.com/',
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'yourmomdoesanal',
|
||||
name: 'Your Mom Does Anal',
|
||||
url: 'http://yourmomdoesanal.com/',
|
||||
tags: ['anal', 'milf'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'yourmomdoesporn',
|
||||
name: 'Your Mom Does Porn',
|
||||
url: 'https://yourmomdoesporn.com/',
|
||||
tags: ['milf'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
{
|
||||
slug: 'mugfucked',
|
||||
name: 'Mugfucked',
|
||||
url: 'https://mugfucked.com/',
|
||||
tags: ['facefucking', 'blowjob'],
|
||||
network: 'fullpornnetwork',
|
||||
},
|
||||
// GIRLSWAY
|
||||
{
|
||||
slug: 'girlsway',
|
||||
|
@ -4549,7 +4665,7 @@ const sites = [
|
|||
network: 'score',
|
||||
},
|
||||
{
|
||||
name: 'Fucked MILFs',
|
||||
name: 'Your Mom Loves Anal',
|
||||
slug: 'yourmomlovesanal',
|
||||
url: 'https://www.milfbundle.com/yourmomlovesanal',
|
||||
network: 'score',
|
||||
|
|