532 lines
15 KiB
HTML
532 lines
15 KiB
HTML
<div class="link">
|
|
<h1>Générateur de lien</button></h1>
|
|
</br>
|
|
<div class="homepanel">
|
|
<div class="row w-100">
|
|
<div class="hbox col-lg">
|
|
<h1><i class="fa fa-link"></i> Liens raccourcis</h1>
|
|
</br>
|
|
<div id="lkcontent">
|
|
|
|
</div>
|
|
</br>
|
|
<button id="lk_add" class="lk_add"><i class="fa fa-plus"></i> Ajouter</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<dialog class="lk_adduser" id="lk_add_form">
|
|
<h1><i class="fa fa-plus"></i> Ajouter un lien raccourci</h1>
|
|
<p>Nom du raccourci :</p>
|
|
<input class="inp" id="lk_add_name" type="text">
|
|
<p>Lien à raccourcir :</p>
|
|
<input class="inp" id="lk_add_src" type="text">
|
|
<p>Nouveau lien (neutral.raphix.fr/link/<i>votrelien</i>):</p>
|
|
<input class="inp" id="lk_add_dest" type="text">
|
|
<div style="color: rgb(255, 76, 76);" id="lk_add_info"></div>
|
|
</div>
|
|
<button onclick="getPage('link.html')" id="lk_add_close" class="lk_add_close">Annuler</button>
|
|
<button id="lk_add_confirm" class="lk_add_confirm">Ajouter</button>
|
|
|
|
</dialog>
|
|
|
|
<div id="lk_dialog">
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<script>
|
|
|
|
if(typeof lkaddform == 'undefined'){
|
|
|
|
const lkcontent = document.getElementById("lkcontent")
|
|
const lkdialogs = document.getElementById("lk_dialog")
|
|
|
|
|
|
getLinks()
|
|
|
|
function getLinks() {
|
|
|
|
var linksContent = new Array()
|
|
var dialogContent = new Array()
|
|
|
|
|
|
|
|
fetch('/link', {
|
|
method: 'POST',
|
|
redirect: 'follow',
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({"request":"get", "value": ""})
|
|
})
|
|
.then(response => response.json())
|
|
.then(response => showLink(response))
|
|
|
|
function showLink(response) {
|
|
|
|
var links = response.content
|
|
|
|
if(response.result == "failed") {
|
|
content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i> Erreur de chargement des données - Erreur : ' + response.content + '</h1>'
|
|
console.log("FAILED")
|
|
|
|
} else if(response.result == "success") {
|
|
|
|
for(var link of links) {
|
|
|
|
linksContent.push('<div class="row lk_line"> <p class="col-lg"><i class="fas fa-sticky-note"></i> Nom du raccourci : ' + link.name + '</p> <p class="col-lg"><i class="fa-sharp fa-solid fa-link"></i> Lien raccourci : <a href="https://neutral.raphix.fr/link/' + link.dest + '">https://neutral.raphix.fr/link/' + link.dest + '</a></p> <p class="col-lg"><i class="fa-solid fa-up-right-from-square"></i> Lien réel : <a href="' + link.src + '"><strong>Vers le lien</strong></a></p> <div class="col-lg "> <button id="' + link.name + '_edit_btn" class="lk_edit"><i class="fa fa-pen"></i></button> <button id="' + link.name + '_delete" class="lk_delete"><i class="fa fa-trash"></i></button> </div> </div>')
|
|
dialogContent.push('<dialog class="lk_adduser" id="' + link.name + '_dialog"> <h1><i class="fa fa-pen"></i> Editer un lien raccourci</h1> <p>Nom du raccourci :</p> <input class="inp" id="' + link.name + '_edit_name" type="text"> <p>Lien à raccourcir :</p> <input class="inp" id="' + link.name + '_edit_src" type="text"> <p>Nouveau lien (neutral.raphix.fr/link/<i>votrelien</i>):</p> <input class="inp" id="' + link.name + '_edit_dest" type="text"> <div style="color: rgb(255, 76, 76);" id="' + link.name + '_edit_info"></div> </div> <button onclick="getPage(\'link.html\')" id="lk_add_close" class="lk_add_close">Annuler</button> <button id="' + link.name + '_edit_confirm" class="lk_add_confirm">Editer</button> </dialog>')
|
|
|
|
lkcontent.innerHTML = linksContent.join("")
|
|
lkdialogs.innerHTML = dialogContent.join("")
|
|
|
|
}
|
|
|
|
for(var link of links) {
|
|
|
|
makeAction(link)
|
|
}
|
|
|
|
|
|
if(links.length == 0) {
|
|
|
|
lkcontent.innerHTML = '<span style="margin: 2vw;color: rgb(255, 76, 76);">Aucun lien raccourci n\'a été crée.</span>' // lkcontent.innerHTML = linksContent.join("")
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function makeAction(link) {
|
|
|
|
|
|
const lkdelete = document.getElementById(link.name + "_delete")
|
|
const lkedit = document.getElementById(link.name + '_edit_btn')
|
|
const lkdialog = document.getElementById(link.name + "_dialog")
|
|
const lkname = document.getElementById(link.name + '_edit_name')
|
|
const lksrc = document.getElementById(link.name + "_edit_src")
|
|
const lkdest = document.getElementById(link.name + "_edit_dest")
|
|
const lkinfo = document.getElementById(link.name + "_edit_info")
|
|
const lkconfirm = document.getElementById(link.name + "_edit_confirm")
|
|
|
|
|
|
|
|
|
|
|
|
lkdelete.addEventListener("click", () => {
|
|
|
|
|
|
fetch('/link', {
|
|
method: 'POST',
|
|
redirect: 'follow',
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({"request":"del", "value": link.name})
|
|
})
|
|
|
|
|
|
getPage("link.html")
|
|
|
|
})
|
|
|
|
lkedit.addEventListener("click", () => {
|
|
|
|
|
|
lkname.value = link.name
|
|
lksrc.value = link.src
|
|
lkdest.value = link.dest
|
|
|
|
lkdialog.showModal()
|
|
})
|
|
|
|
lkconfirm.addEventListener("click", () => {
|
|
|
|
lkinfo.innerHTML = ""
|
|
|
|
if(lkname.value == "" | lkdest.value == "" | lksrc.value == "") {
|
|
|
|
lkinfo.innerHTML = "Tout les champs doivent être remplis."
|
|
|
|
} else {
|
|
if(lkdest.value.includes(" ") | lksrc.value.includes(" ")) {
|
|
|
|
lkinfo.innerHTML = "Aucun espace n'est accepté dans les liens"
|
|
|
|
} else {
|
|
|
|
const requestData = {
|
|
"name":lkname.value,
|
|
"src":lksrc.value,
|
|
"dest":lkdest.value,
|
|
"original":link.name
|
|
|
|
}
|
|
|
|
fetch('/link', {
|
|
method: 'POST',
|
|
redirect: 'follow',
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({"request":"edit", "value": requestData})
|
|
})
|
|
.then(response => response.json())
|
|
.then(response => afteredit(response))
|
|
|
|
function afteredit(response) {
|
|
|
|
|
|
if(response.result == "failed") {
|
|
content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i> Erreur de chargement des données - Erreur : ' + response.content + '</h1>'
|
|
console.log("FAILED")
|
|
|
|
} else if(response.result == "success") {
|
|
|
|
if(response.content == "EDI") {
|
|
getPage("link.html")
|
|
|
|
}else if(response.content == "NAME_ALREADY_USED") {
|
|
|
|
lkinfo.innerHTML = "Le nom du raccourci est déjà utilisé"
|
|
|
|
} else if(response.content == "DEST_ALREADY_USED") {
|
|
|
|
lkinfo.innerHTML = "L'URL de raccourci est déjà utilisé"
|
|
} else {
|
|
|
|
lkinfo.innerHTML = "ECHEC - Réessayez plus tard !"
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
}
|
|
|
|
|
|
const lkaddbtn = document.getElementById("lk_add")
|
|
const lkaddform = document.getElementById("lk_add_form")
|
|
const lkaddname = document.getElementById("lk_add_name")
|
|
const lkaddsrc = document.getElementById("lk_add_src")
|
|
const lkadddest = document.getElementById("lk_add_dest")
|
|
const lkaddconfirm = document.getElementById("lk_add_confirm")
|
|
const lkaddinfo = document.getElementById("lk_add_info")
|
|
|
|
|
|
lkaddbtn.addEventListener("click", () => {
|
|
|
|
lkaddform.showModal()
|
|
|
|
})
|
|
|
|
lkaddconfirm.addEventListener("click", () => {
|
|
|
|
lkaddinfo.innerHTML = ""
|
|
|
|
if(lkaddname.value == "" | lkadddest.value == "" | lkaddsrc.value == "") {
|
|
lkaddinfo.innerHTML = "Tout les champs doivent être remplis."
|
|
|
|
} else {
|
|
|
|
if(lkadddest.value.includes(" ") | lkaddsrc.value.includes(" ")) {
|
|
|
|
lkaddinfo.innerHTML = "Aucun espace n'est accepté dans les liens"
|
|
|
|
} else {
|
|
|
|
const requestData = {
|
|
"name":lkaddname.value,
|
|
"src":lkaddsrc.value,
|
|
"dest":lkadddest.value
|
|
|
|
}
|
|
|
|
fetch('/link', {
|
|
method: 'POST',
|
|
redirect: 'follow',
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({"request":"add", "value": requestData})
|
|
})
|
|
.then(response => response.json())
|
|
.then(response => af(response))
|
|
|
|
function af(response) {
|
|
|
|
if(response.result == "failed") {
|
|
content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i> Erreur de chargement des données - Erreur : ' + response.content + '</h1>'
|
|
console.log("FAILED")
|
|
|
|
} else if(response.result == "success") {
|
|
|
|
if(response.content == "ADDED") {
|
|
getPage("link.html")
|
|
|
|
} else if(response.content == "NAME_ALREADY_USED") {
|
|
lkaddinfo.innerHTML = "Le nom du raccourci est déjà utilisé"
|
|
|
|
} else if(response.content == "DEST_ALREADY_USED") {
|
|
|
|
lkaddinfo.innerHTML = "L'URL de raccourci est déjà utilisé"
|
|
} else {
|
|
|
|
lkaddinfo.innerHTML = "ECHEC - Réessayez plus tard !"
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<!-- Style-->
|
|
<style>
|
|
|
|
|
|
|
|
.hbox h1 {
|
|
|
|
font-size: large;
|
|
|
|
}
|
|
|
|
table {
|
|
color: white;
|
|
|
|
}
|
|
|
|
.lk_line {
|
|
|
|
padding: 0.5vw;
|
|
text-align: center;
|
|
align-items: center;
|
|
vertical-align: center;
|
|
}
|
|
|
|
.lk_line a {
|
|
|
|
color: white;
|
|
}
|
|
|
|
.hbox {
|
|
|
|
margin: 1%;
|
|
padding: 1%;
|
|
background-color: rgb(80, 80, 80);
|
|
border-radius: 1vw;
|
|
box-shadow: 5px 5px 5px rgba(80, 80, 80, 0.477) ;
|
|
|
|
}
|
|
|
|
.lk_add {
|
|
|
|
border-radius: 1vw;
|
|
border-color: rgb(0, 174, 255);
|
|
border-width: 1%;
|
|
border-style: solid;
|
|
color: white;
|
|
background-color: transparent;
|
|
transition: all 0.2s ease 0s;
|
|
padding: 0.5vw;
|
|
|
|
}
|
|
|
|
.lk_add:hover {
|
|
box-shadow: 1px 1px 10px rgb(0, 174, 255);
|
|
background-color: rgb(0, 174, 255);
|
|
color: black;
|
|
}
|
|
|
|
.lk_add:active {
|
|
box-shadow: none;
|
|
|
|
}
|
|
|
|
.lk_edit {
|
|
|
|
border-radius: 100%;
|
|
border-color: rgb(0, 174, 255);
|
|
border-width: 1%;
|
|
border-style: solid;
|
|
color: white;
|
|
background-color: transparent;
|
|
transition: all 0.2s ease 0s;
|
|
width: 2.5vw;
|
|
height: 2.5vw;
|
|
margin-left: 0.5vw;
|
|
margin-right: 0.5vw;
|
|
font-size: 1vw;
|
|
|
|
}
|
|
|
|
.lk_edit:hover {
|
|
box-shadow: 1px 1px 10px rgb(0, 174, 255);
|
|
background-color: rgb(0, 174, 255);
|
|
color: black;
|
|
}
|
|
|
|
.lk_edit:active {
|
|
box-shadow: none;
|
|
|
|
}
|
|
|
|
.lk_delete {
|
|
|
|
border-radius: 100%;
|
|
border-color: rgb(255, 48, 48);
|
|
border-width: 1%;
|
|
border-style: solid;
|
|
color: white;
|
|
background-color: transparent;
|
|
transition: all 0.2s ease 0s;
|
|
width: 2.5vw;
|
|
height: 2.5vw;
|
|
margin-left: 0.5vw;
|
|
margin-right: 0.5vw;
|
|
font-size: 1vw;
|
|
}
|
|
|
|
.lk_delete:hover {
|
|
box-shadow: 1px 1px 10px rgb(255, 48, 48);
|
|
background-color: rgb(255, 48, 48);
|
|
color: black;
|
|
}
|
|
|
|
.lk_delete:active {
|
|
box-shadow: none;
|
|
|
|
}
|
|
|
|
.lk_adduser {
|
|
|
|
border-radius: 1vw;
|
|
border-color: transparent;
|
|
background-color: rgb(80, 80, 80);
|
|
color: white;
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
.lk_add_close {
|
|
|
|
border-radius: 1vw;
|
|
border-color: rgb(255, 48, 48);
|
|
border-width: 1%;
|
|
border-style: solid;
|
|
color: white;
|
|
background-color: transparent;
|
|
transition: all 0.2s ease 0s;
|
|
margin: 0.5vw;
|
|
padding: 0.5vw;
|
|
font-size: 1vw;
|
|
}
|
|
|
|
.lk_add_close:hover {
|
|
box-shadow: 1px 1px 10px rgb(255, 48, 48);
|
|
background-color: rgb(255, 48, 48);
|
|
color: black;
|
|
}
|
|
|
|
.lk_add_close:active {
|
|
box-shadow: none;
|
|
|
|
}
|
|
|
|
.lk_add_confirm {
|
|
|
|
border-radius: 1vw;
|
|
border-color: rgb(0, 174, 255);
|
|
border-width: 1%;
|
|
border-style: solid;
|
|
color: white;
|
|
background-color: transparent;
|
|
transition: all 0.2s ease 0s;
|
|
margin: 0.5vw;
|
|
padding: 0.5vw;
|
|
font-size: 1vw;
|
|
|
|
}
|
|
|
|
.lk_add_confirm:hover {
|
|
box-shadow: 1px 1px 10px rgb(0, 174, 255);
|
|
background-color: rgb(0, 174, 255);
|
|
color: black;
|
|
}
|
|
|
|
.lk_add_confirm:active {
|
|
box-shadow: none;
|
|
|
|
}
|
|
|
|
.inp {
|
|
|
|
border-style: hidden;
|
|
border-radius: 1vw;
|
|
padding: 0.2vw;
|
|
padding-left: 1vw;
|
|
transition: all 0.2s ease 0s;
|
|
margin-bottom: 0.5vw;
|
|
width: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.inp:hover {
|
|
|
|
box-shadow: 2px 2px 5px rgba(255, 255, 255, 0.477) ;
|
|
|
|
}
|
|
|
|
|
|
.inp:focus {
|
|
|
|
box-shadow: 5px 5px 5px rgba(0, 174, 255, 0.477) ;
|
|
|
|
}
|
|
|
|
|
|
|
|
</style> |