Compare commits
No commits in common. "8e0947ed4b81847852473ae071f92a346d08fbf4" and "77de7d54ca025011772f13399ddb5a20e12bc8bf" have entirely different histories.
8e0947ed4b
...
77de7d54ca
6 changed files with 210 additions and 217 deletions
|
@ -1,5 +1,5 @@
|
||||||
.navbar {
|
.navbar {
|
||||||
min-height: 3.5rem;
|
min-height: 3.25rem;
|
||||||
background-color: var(--navbar-color);
|
background-color: var(--navbar-color);
|
||||||
box-shadow: rgba(216, 222, 233, 0.15) 0px 5px 10px 0px;
|
box-shadow: rgba(216, 222, 233, 0.15) 0px 5px 10px 0px;
|
||||||
color: rgba(0,0,0,.7);
|
color: rgba(0,0,0,.7);
|
||||||
|
@ -11,15 +11,11 @@
|
||||||
@include transition() {}
|
@include transition() {}
|
||||||
|
|
||||||
@include respond-to("medium-up") {
|
@include respond-to("medium-up") {
|
||||||
|
min-height: 3.25rem;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.container {
|
|
||||||
max-width: 1330px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
.navbar-brand {
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -37,7 +37,7 @@ mongoose
|
||||||
|
|
||||||
const sess = {
|
const sess = {
|
||||||
cookie: {
|
cookie: {
|
||||||
maxAge: 604800000, // INFO: 7 jours
|
maxAge: 86400000,
|
||||||
},
|
},
|
||||||
secret,
|
secret,
|
||||||
saveUninitialized: false,
|
saveUninitialized: false,
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
<div class="grid md:grid-cols-3 gap-16">
|
|
||||||
<div>
|
|
||||||
<template v-for="album in tracklist">
|
|
||||||
<strong v-if="album.title">{{album.title}}</strong>
|
|
||||||
<ul>
|
|
||||||
<li v-for="(track, index) in album.tracks" class="ml-4">
|
|
||||||
{{track.position || (index+1)}} - {{ track.title }} <template v-if="track.duration">({{track.duration}})</template>
|
|
||||||
<ul v-if="track.artists && track.artists.length > 0" class="sm-hidden">
|
|
||||||
<li v-for="extra in track.artists" class=" ml-4">
|
|
||||||
<small>{{extra.name}}</small>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul v-if="track.extraartists && track.extraartists.length > 0" class="sm-hidden">
|
|
||||||
<li v-for="extra in track.extraartists" class=" ml-4">
|
|
||||||
<small>{{extra.role}} : {{extra.name}}</small>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<div class="md:col-span-2">
|
|
||||||
<div class="grid grid-cols-2 gap-10">
|
|
||||||
<div>
|
|
||||||
<strong>Genres</strong>
|
|
||||||
<br />
|
|
||||||
<template v-for="(genre, index) in item.genres">
|
|
||||||
{{genre}}<template v-if="index < item.genres.length - 1">, </template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<strong>Styles</strong>
|
|
||||||
<br />
|
|
||||||
<span v-for="(style, index) in item.styles">
|
|
||||||
{{style}}<template v-if="index < item.styles.length - 1">, </template>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="grid grid-cols-3 gap-10">
|
|
||||||
<div>
|
|
||||||
<strong>Pays</strong>
|
|
||||||
<br />
|
|
||||||
<span>{{item.country}}</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<strong>Année</strong>
|
|
||||||
<br />
|
|
||||||
<span>{{item.year}}</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<strong>Date de sortie</strong>
|
|
||||||
<br />
|
|
||||||
<span>{{item.released}}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="grid gap-10">
|
|
||||||
<div>
|
|
||||||
<strong>Format<template v-if="item.formats.length > 1">s</template></strong>
|
|
||||||
<ul class="ml-4">
|
|
||||||
<li v-for="(format) in item.formats">
|
|
||||||
{{format.name}}
|
|
||||||
<template v-if="format.text">
|
|
||||||
- <i>{{format.text}}</i>
|
|
||||||
</template>
|
|
||||||
<template v-if="format.descriptions && format.descriptions.length > 0">
|
|
||||||
(<span v-for="(description, index) in format.descriptions">
|
|
||||||
{{description}}<template v-if="index < format.descriptions.length - 1">, </template>
|
|
||||||
</span>)
|
|
||||||
</template>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-10">
|
|
||||||
<div>
|
|
||||||
<strong id="identifiers">Code<template v-if="item.identifiers.length > 1">s</template> barre<template v-if="item.identifiers.length > 1">s</template></strong>
|
|
||||||
<ol class="ml-4">
|
|
||||||
<li v-for="identifier in identifiers">
|
|
||||||
{{identifier.value}} ({{identifier.type}})
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
<template v-if="item.identifiers.length > identifiersPreviewLength">
|
|
||||||
<button type="button" class="button is-link" v-if="identifiersMode === 'preview'" @click="showAllIdentifiers">
|
|
||||||
Voir la suite
|
|
||||||
</button>
|
|
||||||
<button type="button" class="button is-link" v-if="identifiersMode === 'all'" @click="showLessIdentifiers">
|
|
||||||
Voir moins
|
|
||||||
</button>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<strong>Label<template v-if="item.labels.length > 1">s</template></strong>
|
|
||||||
<ol class="ml-4">
|
|
||||||
<li v-for="label in item.labels">
|
|
||||||
{{label.name}} {{label.catno}}
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
<strong>Société<template v-if="item.companies.length > 1">s</template></strong>
|
|
||||||
<ol class="ml-4">
|
|
||||||
<li v-for="company in item.companies">
|
|
||||||
<strong>{{company.entity_type_name}}</strong> {{company.name}}
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="grid gap-10">
|
|
||||||
<div>
|
|
||||||
<strong>Note</strong>
|
|
||||||
<div v-html="(item.notes || '').replaceAll('\n', '<br />')"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="grid gap-10">
|
|
||||||
<div>
|
|
||||||
<strong>Vidéos</strong>
|
|
||||||
<dl>
|
|
||||||
<template v-for="video in item.videos">
|
|
||||||
<dt>
|
|
||||||
<a :href="video.uri" target="_blank" rel="noopener noreferrer">{{video.title}}</a>
|
|
||||||
</dt>
|
|
||||||
<dd>
|
|
||||||
{{video.description}}
|
|
||||||
</dd>
|
|
||||||
</template>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
146
views/index.ejs
146
views/index.ejs
|
@ -35,91 +35,89 @@
|
||||||
<% } %>
|
<% } %>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar">
|
<nav class="navbar" aria-label="Navigation principale">
|
||||||
<nav class="navbar container" aria-label="Navigation principale">
|
<div class="navbar-brand">
|
||||||
<div class="navbar-brand">
|
<a class="navbar-item" href="/">
|
||||||
<a class="navbar-item" href="/">
|
<img src="/img/logo.png" alt="Logo MusicTopus">
|
||||||
<img src="/img/logo.png" alt="Logo MusicTopus">
|
<span>MusicTopus</span>
|
||||||
<span>MusicTopus</span>
|
</a>
|
||||||
</a>
|
|
||||||
|
|
||||||
<a role="button" class="navbar-burger" aria-label="Afficher le menu" aria-expanded="false" data-target="navbar">
|
<a role="button" class="navbar-burger" aria-label="Afficher le menu" aria-expanded="false" data-target="navbar">
|
||||||
<span aria-hidden="true"></span>
|
<span aria-hidden="true"></span>
|
||||||
<span aria-hidden="true"></span>
|
<span aria-hidden="true"></span>
|
||||||
<span aria-hidden="true"></span>
|
<span aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="navbar" class="navbar-menu">
|
||||||
|
<% if ( user ) { %>
|
||||||
|
<div class="navbar-start">
|
||||||
|
<div class="navbar-item">
|
||||||
|
<div class="buttons">
|
||||||
|
<a class="button is-primary" href="/ajouter-un-album">
|
||||||
|
<i class="icon-plus"></i>
|
||||||
|
<span>
|
||||||
|
Ajouter un album
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
<div id="navbar" class="navbar-menu">
|
<div class="navbar-end">
|
||||||
|
<a class="navbar-item" href="/nous-contacter">
|
||||||
|
Nous contacter
|
||||||
|
</a>
|
||||||
<% if ( user ) { %>
|
<% if ( user ) { %>
|
||||||
<div class="navbar-start">
|
<div class="navbar-item has-dropdown">
|
||||||
<div class="navbar-item">
|
<a class="navbar-link">
|
||||||
<div class="buttons">
|
<i class="icon-user"></i>
|
||||||
<a class="button is-primary" href="/ajouter-un-album">
|
<span>
|
||||||
<i class="icon-plus"></i>
|
<%= user.username %>
|
||||||
<span>
|
</span>
|
||||||
Ajouter un album
|
</a>
|
||||||
</span>
|
|
||||||
</a>
|
<div class="navbar-dropdown">
|
||||||
</div>
|
<a class="navbar-item" href="/mon-compte">
|
||||||
|
Mon compte
|
||||||
|
</a>
|
||||||
|
<hr />
|
||||||
|
<a class="navbar-item" href="/ma-collection">
|
||||||
|
Ma collection
|
||||||
|
</a>
|
||||||
|
<a class="navbar-item" href="/ma-collection/exporter">
|
||||||
|
Exporter ma collection
|
||||||
|
</a>
|
||||||
|
<a class="navbar-item" href="/ma-collection/importer">
|
||||||
|
Importer une collection
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
<div class="navbar-item apparence">
|
||||||
<div class="navbar-end">
|
<div class="theme-switch-wrapper">
|
||||||
<a class="navbar-item" href="/nous-contacter">
|
<label class="theme-switch" for="checkbox" aria-label="Passer du thème clair au thème sombre et inversement">
|
||||||
Nous contacter
|
<input type="checkbox" id="checkbox" />
|
||||||
</a>
|
<div class="slider round"></div>
|
||||||
<% if ( user ) { %>
|
</label>
|
||||||
<div class="navbar-item has-dropdown">
|
</div>
|
||||||
<a class="navbar-link">
|
</div>
|
||||||
<i class="icon-user"></i>
|
<div class="navbar-item">
|
||||||
<span>
|
<div class="buttons">
|
||||||
<%= user.username %>
|
<% if ( !user ) { %>
|
||||||
</span>
|
<a class="button is-primary" href="/connexion">
|
||||||
|
<strong>Connexion</strong>
|
||||||
</a>
|
</a>
|
||||||
|
<% } else { %>
|
||||||
<div class="navbar-dropdown">
|
<a class="button is-danger" href="/se-deconnecter">
|
||||||
<a class="navbar-item" href="/mon-compte">
|
Déconnexion
|
||||||
Mon compte
|
</a>
|
||||||
</a>
|
<% } %>
|
||||||
<hr />
|
|
||||||
<a class="navbar-item" href="/ma-collection">
|
|
||||||
Ma collection
|
|
||||||
</a>
|
|
||||||
<a class="navbar-item" href="/ma-collection/exporter">
|
|
||||||
Exporter ma collection
|
|
||||||
</a>
|
|
||||||
<a class="navbar-item" href="/ma-collection/importer">
|
|
||||||
Importer une collection
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<% } %>
|
|
||||||
<div class="navbar-item apparence">
|
|
||||||
<div class="theme-switch-wrapper">
|
|
||||||
<label class="theme-switch" for="checkbox" aria-label="Passer du thème clair au thème sombre et inversement">
|
|
||||||
<input type="checkbox" id="checkbox" />
|
|
||||||
<div class="slider round"></div>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="navbar-item">
|
|
||||||
<div class="buttons">
|
|
||||||
<% if ( !user ) { %>
|
|
||||||
<a class="button is-primary" href="/connexion">
|
|
||||||
<strong>Connexion</strong>
|
|
||||||
</a>
|
|
||||||
<% } else { %>
|
|
||||||
<a class="button is-danger" href="/se-deconnecter">
|
|
||||||
Déconnexion
|
|
||||||
</a>
|
|
||||||
<% } %>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div id="toastr">
|
<div id="toastr">
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
<button aria-label="Fermer" class="close" @click="toggleModal"></button>
|
<button aria-label="Fermer" class="close" @click="toggleModal"></button>
|
||||||
</header>
|
</header>
|
||||||
<section>
|
<section>
|
||||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-16">
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-16">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img :src="details.thumb %>" :alt="`Miniature pour l'album ${details.title}`" />
|
<img :src="details.thumb %>" :alt="`Miniature pour l'album ${details.title}`" />
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="md:col-span-2">
|
<div>
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-10">
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-10">
|
||||||
<div class="grid grid-cols-1">
|
<div class="grid grid-cols-1">
|
||||||
<strong>Genres</strong>
|
<strong>Genres</strong>
|
||||||
|
|
|
@ -21,7 +21,139 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
<%- include('../../../components/album.ejs') %>
|
<div class="grid md:grid-cols-3 gap-16">
|
||||||
|
<div>
|
||||||
|
<template v-for="album in tracklist">
|
||||||
|
<strong v-if="album.title">{{album.title}}</strong>
|
||||||
|
<ul>
|
||||||
|
<li v-for="(track, index) in album.tracks" class="ml-4">
|
||||||
|
{{track.position || (index+1)}} - {{ track.title }} <template v-if="track.duration">({{track.duration}})</template>
|
||||||
|
<ul v-if="track.artists && track.artists.length > 0" class="sm-hidden">
|
||||||
|
<li v-for="extra in track.artists" class=" ml-4">
|
||||||
|
<small>{{extra.name}}</small>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul v-if="track.extraartists && track.extraartists.length > 0" class="sm-hidden">
|
||||||
|
<li v-for="extra in track.extraartists" class=" ml-4">
|
||||||
|
<small>{{extra.role}} : {{extra.name}}</small>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<div class="md:col-span-2">
|
||||||
|
<div class="grid grid-cols-2 gap-10">
|
||||||
|
<div>
|
||||||
|
<strong>Genres</strong>
|
||||||
|
<br />
|
||||||
|
<template v-for="(genre, index) in item.genres">
|
||||||
|
{{genre}}<template v-if="index < item.genres.length - 1">, </template>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Styles</strong>
|
||||||
|
<br />
|
||||||
|
<span v-for="(style, index) in item.styles">
|
||||||
|
{{style}}<template v-if="index < item.styles.length - 1">, </template>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="grid grid-cols-3 gap-10">
|
||||||
|
<div>
|
||||||
|
<strong>Pays</strong>
|
||||||
|
<br />
|
||||||
|
<span>{{item.country}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Année</strong>
|
||||||
|
<br />
|
||||||
|
<span>{{item.year}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Date de sortie</strong>
|
||||||
|
<br />
|
||||||
|
<span>{{item.released}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="grid gap-10">
|
||||||
|
<div>
|
||||||
|
<strong>Format<template v-if="item.formats.length > 1">s</template></strong>
|
||||||
|
<ul class="ml-4">
|
||||||
|
<li v-for="(format) in item.formats">
|
||||||
|
{{format.name}}
|
||||||
|
<template v-if="format.text">
|
||||||
|
- <i>{{format.text}}</i>
|
||||||
|
</template>
|
||||||
|
<template v-if="format.descriptions && format.descriptions.length > 0">
|
||||||
|
(<span v-for="(description, index) in format.descriptions">
|
||||||
|
{{description}}<template v-if="index < format.descriptions.length - 1">, </template>
|
||||||
|
</span>)
|
||||||
|
</template>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-10">
|
||||||
|
<div>
|
||||||
|
<strong id="identifiers">Code<template v-if="item.identifiers.length > 1">s</template> barre<template v-if="item.identifiers.length > 1">s</template></strong>
|
||||||
|
<ol class="ml-4">
|
||||||
|
<li v-for="identifier in identifiers">
|
||||||
|
{{identifier.value}} ({{identifier.type}})
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<template v-if="item.identifiers.length > identifiersPreviewLength">
|
||||||
|
<button type="button" class="button is-link" v-if="identifiersMode === 'preview'" @click="showAllIdentifiers">
|
||||||
|
Voir la suite
|
||||||
|
</button>
|
||||||
|
<button type="button" class="button is-link" v-if="identifiersMode === 'all'" @click="showLessIdentifiers">
|
||||||
|
Voir moins
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Label<template v-if="item.labels.length > 1">s</template></strong>
|
||||||
|
<ol class="ml-4">
|
||||||
|
<li v-for="label in item.labels">
|
||||||
|
{{label.name}} {{label.catno}}
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<strong>Société<template v-if="item.companies.length > 1">s</template></strong>
|
||||||
|
<ol class="ml-4">
|
||||||
|
<li v-for="company in item.companies">
|
||||||
|
<strong>{{company.entity_type_name}}</strong> {{company.name}}
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="grid gap-10">
|
||||||
|
<div>
|
||||||
|
<strong>Note</strong>
|
||||||
|
<div v-html="(item.notes || '').replaceAll('\n', '<br />')"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="grid gap-10">
|
||||||
|
<div>
|
||||||
|
<strong>Vidéos</strong>
|
||||||
|
<dl>
|
||||||
|
<template v-for="video in item.videos">
|
||||||
|
<dt>
|
||||||
|
<a :href="video.uri" target="_blank" rel="noopener noreferrer">{{video.title}}</a>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{{video.description}}
|
||||||
|
</dd>
|
||||||
|
</template>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="modal" :class="{'is-visible': modalIsVisible}">
|
<div class="modal" :class="{'is-visible': modalIsVisible}">
|
||||||
<div class="modal-background"></div>
|
<div class="modal-background"></div>
|
||||||
|
|
Loading…
Reference in a new issue