Version 0.8.0 - Ajout des Alert
This commit is contained in:
parent
2046a89c79
commit
994ba72caf
24
README.md
24
README.md
@ -20,31 +20,11 @@
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### Subsonics - Web - 0.7.0
|
|
||||||
- **Adds :** *Settings : Logs, Connexions, Gestion d'accès | Users V2 | Improvements*
|
|
||||||
#### Details
|
|
||||||
|
|
||||||
**Settings**
|
|
||||||
> - Logs : Afficher les logs
|
|
||||||
> - Connexions : Afficher l'état des nodes et modifier les nodes
|
|
||||||
> - Gestion d'accès : Bannir les personnes / Leur ajouter des perms *
|
|
||||||
|
|
||||||
**Users V2**
|
|
||||||
> - Ajout des permissions
|
|
||||||
> - Autoriser uniquement le CLP a controler BOT
|
|
||||||
|
|
||||||
**Improvements**
|
|
||||||
|
|
||||||
> - Change Volume with moving |
|
|
||||||
> - Find a default URL when thumbnail is null
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
### Subsonics - Web - 0.8.0
|
### Subsonics - Web - 0.8.0
|
||||||
- **Adds :** *Alerts, Playlist Share, Edit playlist picture | Tooltip*
|
- **Adds :** *Alerts, Playlist Share, Edit playlist picture | Tooltip*
|
||||||
#### Details
|
#### Details
|
||||||
|
|
||||||
**Alerts**
|
**Alerts (Done)**
|
||||||
> - Popup Prefab
|
> - Popup Prefab
|
||||||
> - Declencher lors de l'action
|
> - Declencher lors de l'action
|
||||||
|
|
||||||
@ -79,7 +59,7 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
### Subsonics - Web - 1.0.0
|
### Subsonics - Web - 1.0.0
|
||||||
- **Adds :** *Bugs Fixes & Trailer | Add Playlist from Youtube*
|
- **Adds :** *Bugs Fixes & Trailer*
|
||||||
#### Details
|
#### Details
|
||||||
-- TO DO
|
-- TO DO
|
||||||
|
|
||||||
|
@ -4,35 +4,5 @@
|
|||||||
"password": "horizxon.studio",
|
"password": "horizxon.studio",
|
||||||
"port": 80,
|
"port": 80,
|
||||||
"secure": false
|
"secure": false
|
||||||
},
|
|
||||||
{
|
|
||||||
"host": "ssl.horizxon.studio",
|
|
||||||
"password": "horizxon.studio",
|
|
||||||
"port": 443,
|
|
||||||
"secure": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"host": "suki.nathan.to",
|
|
||||||
"password": "adowbongmanacc",
|
|
||||||
"port": 443,
|
|
||||||
"secure": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"host": "lavalink.lexnet.cc",
|
|
||||||
"password": "lexn3tl@val!nk",
|
|
||||||
"port": 443,
|
|
||||||
"secure": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"host": "eu-lavalink.lexnet.cc",
|
|
||||||
"port": 443,
|
|
||||||
"password": "lexn3tl@val!nk",
|
|
||||||
"retryAmount": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"host": "narco.buses.rocks",
|
|
||||||
"port": 2269,
|
|
||||||
"password": "glasshost1984",
|
|
||||||
"retryAmount": 1
|
|
||||||
}
|
}
|
||||||
]
|
]
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "subsonics-web",
|
"name": "subsonics-web",
|
||||||
"author": "Raphix",
|
"author": "Raphix",
|
||||||
"version": "0.7.4",
|
"version": "0.8.0",
|
||||||
"nodemonConfig": {
|
"nodemonConfig": {
|
||||||
"ext": "js, html",
|
"ext": "js, html",
|
||||||
"ignore": [
|
"ignore": [
|
||||||
|
@ -320,15 +320,32 @@ function IOConnection(io) {
|
|||||||
subplayer.leave()
|
subplayer.leave()
|
||||||
io.emit("ANSWER/GET/DISCONNECT", "OK")
|
io.emit("ANSWER/GET/DISCONNECT", "OK")
|
||||||
|
|
||||||
|
var cookies = socket.handshake.headers.cookie
|
||||||
|
cookies = cook.parse(cookies)
|
||||||
|
var token = cookies.token
|
||||||
|
|
||||||
|
const user = auth.getUser(token)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a déconnecté le Bot"})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
GetRequest(io, socket, "RESTART", () => {
|
GetRequest(io, socket, "RESTART", () => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var cookies = socket.handshake.headers.cookie
|
||||||
|
cookies = cook.parse(cookies)
|
||||||
|
var token = cookies.token
|
||||||
|
|
||||||
|
const user = auth.getUser(token)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a redémarré le Bot"})
|
||||||
|
|
||||||
|
|
||||||
const pm2 = require('pm2');
|
const pm2 = require('pm2');
|
||||||
|
|
||||||
pm2.restart('SubSonics - Bot Discord')
|
pm2.restart('SubSonics - Bot Discord')
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
GetRequest(io, socket, "NODES", () => {
|
GetRequest(io, socket, "NODES", () => {
|
||||||
@ -531,6 +548,7 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
if(auth.checkUser(token)) {
|
if(auth.checkUser(token)) {
|
||||||
|
|
||||||
|
|
||||||
subplayer.seek(data)
|
subplayer.seek(data)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -573,7 +591,7 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on("SEND/DELETE_QUEUE", (data) => {
|
socket.on("SEND/DELETE_QUEUE", (data, title) => {
|
||||||
|
|
||||||
|
|
||||||
var cookies = socket.handshake.headers.cookie
|
var cookies = socket.handshake.headers.cookie
|
||||||
@ -587,6 +605,10 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
var sublist = new List()
|
var sublist = new List()
|
||||||
sublist.removeByIndex(data)
|
sublist.removeByIndex(data)
|
||||||
|
|
||||||
|
|
||||||
|
const user = auth.getUser(token)
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a supprimé un titre dans la liste de lecture : <strong>" + title + "</strong>" })
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -643,6 +665,9 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
data.username = auth.getUser(token)
|
data.username = auth.getUser(token)
|
||||||
subplayer.report(null, null, data)
|
subplayer.report(null, null, data)
|
||||||
|
|
||||||
|
const user = auth.getUser(token)
|
||||||
|
io.emit("NOTIFICATION", {"image_src": "https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.vecteezy.com%2Fvector-art%2F19521981-green-check-mark-vector-icon-with-circle-checkmark-illustration&psig=AOvVaw1-8kuUXImHNwIoVvySyiSK&ust=1694119774978000&source=images&cd=vfe&opi=89978449&ved=0CBAQjRxqFwoTCLjb2YzuloEDFQAAAAAdAAAAABAE", "text": "Votre rapport de bug a été correctement envoyé !" })
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -708,7 +733,7 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
subplayer.addSong(data, null, userId)
|
subplayer.addSong(data, null, userId)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a ajouté un nouveau titre : <strong>" + data.title + "</strong>" })
|
||||||
io.emit("ANSWER/SEND/ADD_SONG/OK")
|
io.emit("ANSWER/SEND/ADD_SONG/OK")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -744,7 +769,7 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
subplayer.addSong(data, null, userId, true)
|
subplayer.addSong(data, null, userId, true)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a fait jouer maintenant un nouveau titre : <strong>" + data.title + "</strong>" })
|
||||||
io.emit("ANSWER/SEND/ADD_SONG_NOW/OK")
|
io.emit("ANSWER/SEND/ADD_SONG_NOW/OK")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -780,8 +805,9 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
subplayer.addSong(data, null, userId, false, true)
|
subplayer.addSong(data, null, userId, false, true)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a ajouté un nouveau titre : <strong>" + data.title + "</strong>" })
|
||||||
io.emit("ANSWER/SEND/FP_ADD_SONG/OK")
|
io.emit("ANSWER/SEND/FP_ADD_SONG/OK")
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -813,7 +839,7 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
subplayer.addSong(data, null, userId, true, true)
|
subplayer.addSong(data, null, userId, true, true)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a fait jouer maintenant un nouveau titre : <strong>" + data.title + "</strong>" })
|
||||||
io.emit("ANSWER/SEND/FP_ADD_SONG_NOW/OK")
|
io.emit("ANSWER/SEND/FP_ADD_SONG_NOW/OK")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -848,7 +874,7 @@ function IOConnection(io) {
|
|||||||
|
|
||||||
subplayer.addSongsFromPlaylist(data, null, userId, true)
|
subplayer.addSongsFromPlaylist(data, null, userId, true)
|
||||||
|
|
||||||
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a ajouté une playlist à la liste de lecture !" })
|
||||||
io.emit("ANSWER/SEND/FP_PLAY_PLAYLIST/OK")
|
io.emit("ANSWER/SEND/FP_PLAY_PLAYLIST/OK")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -51,6 +51,7 @@ const restartBtn = document.getElementById("restartBtn")
|
|||||||
const WelcomeContent = mainView.firstElementChild.outerHTML
|
const WelcomeContent = mainView.firstElementChild.outerHTML
|
||||||
const playlistContent = document.getElementById("playlist-content")
|
const playlistContent = document.getElementById("playlist-content")
|
||||||
|
|
||||||
|
|
||||||
var wasOnPlaylist = false
|
var wasOnPlaylist = false
|
||||||
|
|
||||||
var playlistSelected = null
|
var playlistSelected = null
|
||||||
@ -353,7 +354,7 @@ searchBtn.addEventListener("click", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PFormatduration = pmax
|
PFormatduration = pmax
|
||||||
contentToPush.push(' <div class="search_song"> <img class="search_thumbnail" src="' + thumbnail + '"><div class="search_titleSong"> <p class="search_title">' + title.title + '</p></div> <p>' + title.author + '</p><p>' + PFormatduration + '</p> <div class="search_buttons"><button id="' + data.indexOf(title) + '_ladd" class="search_add"><i class="fa fa-plus"></i></button> <div class="searchMoreDiv"><button id="' + data.indexOf(title) + '_lmore" class="search_lmore"><i class="fa-solid fa-ellipsis"></i></button></div><div class="searchPopup" id="' + data.indexOf(title) + '_popup"><div id="' + data.indexOf(title) + '_playNow" class="INDEX_line"><i class="fa-solid fa-play"></i> Lire maintenant</div><div id="' + data.indexOf(title) +'_addPlaylist" class="INDEX_line"><i class="fa-regular fa-square-plus"></i> Ajouter à une playlist</div></div></div><dialog id="' + data.indexOf(title) + 'playlistManager" class="report_dialog"><div class="rlineclose"><p class="rtitle"><i class="fa fa-square-plus"></i> Ajouter à une playlist</p><button id="' + data.indexOf(title) + 'playlistManager_close" class="report_close"><i class="fa-solid fa-xmark"></i></button></div><div class="apContent"><img id="' + data.indexOf(title) + 'playlist_add_img" class="ppTile" src="/images/playlist-tile.svg"><p style="padding: 1%;" id="' + data.indexOf(title) + 'playlist_add_music"></p><p>Selectionner la playlist</p><select style=" color: white; background-color: transparent; border: solid 2px #2c3df4;padding: 1%; border-radius: 12px;" id="' + data.indexOf(title) + 'playlistSelection"></select><button id="' + data.indexOf(title) + 'playlistAddSong" class="rsend"><i class="fa fa-plus"></i> Ajouter</button></div></dialog></div>')
|
contentToPush.push(' <div class="search_song"> <img class="search_thumbnail" src="' + thumbnail + '"><div class="search_titleSong"> <p class="search_title">' + title.title + '</p></div> <p>' + title.author + '</p><p>' + PFormatduration + '</p> <div class="search_buttons"><button id="' + data.indexOf(title) + '_ladd" class="search_add"><i class="fa fa-plus"></i></button> <div class="searchMoreDiv"><button id="' + data.indexOf(title) + '_lmore" class="search_lmore"><i class="fa-solid fa-ellipsis"></i></button></div><div class="searchPopup" id="' + data.indexOf(title) + '_popup"><div id="' + data.indexOf(title) + '_playNow" class="INDEX_line"><i class="fa-solid fa-play"></i> Lire maintenant</div><div id="' + data.indexOf(title) +'_addPlaylist" class="INDEX_line"><i class="fa-regular fa-square-plus"></i> Ajouter à une playlist</div><div id="' + data.indexOf(title) +'_copy" class="INDEX_line"><i class="fa-regular fa-copy"></i> Copier le lien</div></div></div><dialog id="' + data.indexOf(title) + 'playlistManager" class="report_dialog"><div class="rlineclose"><p class="rtitle"><i class="fa fa-square-plus"></i> Ajouter à une playlist</p><button id="' + data.indexOf(title) + 'playlistManager_close" class="report_close"><i class="fa-solid fa-xmark"></i></button></div><div class="apContent"><img id="' + data.indexOf(title) + 'playlist_add_img" class="ppTile" src="/images/playlist-tile.svg"><p style="padding: 1%;" id="' + data.indexOf(title) + 'playlist_add_music"></p><p>Selectionner la playlist</p><select style=" color: white; background-color: transparent; border: solid 2px #2c3df4;padding: 1%; border-radius: 12px;" id="' + data.indexOf(title) + 'playlistSelection"></select><button id="' + data.indexOf(title) + 'playlistAddSong" class="rsend"><i class="fa fa-plus"></i> Ajouter</button></div></dialog></div>')
|
||||||
}
|
}
|
||||||
|
|
||||||
if(contentToPush.join("") == "") {
|
if(contentToPush.join("") == "") {
|
||||||
@ -371,6 +372,7 @@ searchBtn.addEventListener("click", () => {
|
|||||||
const test_lmore = document.getElementById(data.indexOf(title) + "_lmore")
|
const test_lmore = document.getElementById(data.indexOf(title) + "_lmore")
|
||||||
const testPopup = document.getElementById(data.indexOf(title) + "_popup")
|
const testPopup = document.getElementById(data.indexOf(title) + "_popup")
|
||||||
const playNow = document.getElementById(data.indexOf(title) + "_playNow")
|
const playNow = document.getElementById(data.indexOf(title) + "_playNow")
|
||||||
|
const copy = document.getElementById(data.indexOf(title) + "_copy")
|
||||||
const addPlaylist = document.getElementById(data.indexOf(title) + "_addPlaylist")
|
const addPlaylist = document.getElementById(data.indexOf(title) + "_addPlaylist")
|
||||||
|
|
||||||
const PlaylistManager = document.getElementById(data.indexOf(title) + "playlistManager")
|
const PlaylistManager = document.getElementById(data.indexOf(title) + "playlistManager")
|
||||||
@ -394,6 +396,11 @@ searchBtn.addEventListener("click", () => {
|
|||||||
send("ADD_SONG", data[add_to.id.replace("_ladd", "")])
|
send("ADD_SONG", data[add_to.id.replace("_ladd", "")])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
copy.addEventListener("click", () => {
|
||||||
|
navigator.clipboard.writeText(data[add_to.id.replace("_ladd", "")].uri)
|
||||||
|
testPopup.style.display = "none"
|
||||||
|
})
|
||||||
|
|
||||||
addPlaylist.addEventListener("click", () => {
|
addPlaylist.addEventListener("click", () => {
|
||||||
|
|
||||||
PlaylistManager.showModal()
|
PlaylistManager.showModal()
|
||||||
@ -542,6 +549,46 @@ function fp_play_playlist(key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var timeoutId = null
|
||||||
|
|
||||||
|
socket.on("NOTIFICATION", (data) => {
|
||||||
|
|
||||||
|
if(timeoutId) {
|
||||||
|
|
||||||
|
clearTimeout(timeoutId)
|
||||||
|
}
|
||||||
|
|
||||||
|
const alertDiv = document.getElementById("alert")
|
||||||
|
const alert_image = document.getElementById("alert_image")
|
||||||
|
const alert_text = document.getElementById("alert_text")
|
||||||
|
|
||||||
|
alert_image.src = data.image_src
|
||||||
|
alert_text.innerHTML = data.text
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
alertDiv.classList.add("alert_div_on")
|
||||||
|
|
||||||
|
timeoutId = setTimeout(() => {
|
||||||
|
|
||||||
|
alertDiv.classList.remove("alert_div_on")
|
||||||
|
}, 4000)
|
||||||
|
|
||||||
|
alertDiv.addEventListener("click", () => {
|
||||||
|
|
||||||
|
|
||||||
|
if(timeoutId) {
|
||||||
|
|
||||||
|
clearTimeout(timeoutId)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
alertDiv.classList.remove("alert_div_on")
|
||||||
|
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
const cPlaylistManager = document.getElementById("current_playlistManager")
|
const cPlaylistManager = document.getElementById("current_playlistManager")
|
||||||
const cplaylistManager_close = document.getElementById("current_playlistManager_close")
|
const cplaylistManager_close = document.getElementById("current_playlistManager_close")
|
||||||
const cplaylistSelection = document.getElementById("current_playlistSelection")
|
const cplaylistSelection = document.getElementById("current_playlistSelection")
|
||||||
@ -916,7 +963,7 @@ socket.on("/ALWAYS/MUSIC_STATE", (data) => {
|
|||||||
|
|
||||||
titleBtn.addEventListener("click", () => {
|
titleBtn.addEventListener("click", () => {
|
||||||
|
|
||||||
send("DELETE_QUEUE", titleBtn.id.replace("_ldelete", ""))
|
socket.emit("SEND/DELETE_QUEUE", titleBtn.id.replace("_ldelete", ""), data.queue[moveBtn.id.replace("_lmove", "")].title )
|
||||||
})
|
})
|
||||||
|
|
||||||
moveBtn.addEventListener("click", () => {
|
moveBtn.addEventListener("click", () => {
|
||||||
|
@ -306,7 +306,9 @@ socket.on("ALWAYS/NODES",(data) => {
|
|||||||
|
|
||||||
var dataToPush = new Array()
|
var dataToPush = new Array()
|
||||||
|
|
||||||
dataToPush.push(`<div style='width: 100%; text-align: right;'>
|
dataToPush.push(`<div style='width: 100%; display: flex; justify-content: space-between; align-items: center;'>
|
||||||
|
<div><p><strong>Note : </strong> Les serveurs ci-dessous permettent le bon fonctionnement du Bot.</p>
|
||||||
|
<p>Si aucun des serveurs ne fonctionne, ajoutez-en en prenant ce lien pour la liste des serveurs : <a style='color: white' target='_blank' href="https://lavalink.darrennathanael.com/SSL/lavalink-with-ssl/"><strong>Lavalink SSL</strong></a></div>
|
||||||
<button id='an_add' class='primary'><i class='fa fa-plus'></i></button></div><hr>`)
|
<button id='an_add' class='primary'><i class='fa fa-plus'></i></button></div><hr>`)
|
||||||
|
|
||||||
dataToPush.push(`
|
dataToPush.push(`
|
||||||
|
@ -1130,3 +1130,39 @@ p {
|
|||||||
height: 10%;
|
height: 10%;
|
||||||
padding: 2%;
|
padding: 2%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.alert_div {
|
||||||
|
|
||||||
|
width: 20%;
|
||||||
|
position: absolute;
|
||||||
|
top: -10%;
|
||||||
|
right: 41%;
|
||||||
|
transition: all 2s;
|
||||||
|
z-index: 2;
|
||||||
|
color: white;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #2d2d2d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert_image {
|
||||||
|
|
||||||
|
width: 4vw;
|
||||||
|
height: 4vw;
|
||||||
|
margin-right: 3% !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert_text {
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 1% !important;
|
||||||
|
font-size: 12px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert_div_on {
|
||||||
|
transition: all 2s;
|
||||||
|
top: 4% !important;
|
||||||
|
}
|
@ -8,6 +8,10 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="INDEX_Content">
|
<div class="INDEX_Content">
|
||||||
|
<div style='cursor: pointer;' class="alert_div" id="alert">
|
||||||
|
<img class="alert_image" id="alert_image" src="/images/playlist-tile.svg">
|
||||||
|
<p class="alert_text" id="alert_text">Lorem ipsum, dolor sit amet consectetur adipisicing elit. </p>
|
||||||
|
</div>
|
||||||
<div class="INDEX_title">
|
<div class="INDEX_title">
|
||||||
<div class=" LOGIN_title">
|
<div class=" LOGIN_title">
|
||||||
<img class="LOGIN_logopng" src="/images/logo.png">
|
<img class="LOGIN_logopng" src="/images/logo.png">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user