🎉 Hello world

This commit is contained in:
2020-01-08 12:16:42 +01:00
commit 5b6426306f
43 changed files with 2878 additions and 0 deletions

55
assets/css/custom.css Normal file
View File

@@ -0,0 +1,55 @@
body{
width:100%;
height:100%;
}
ul{
list-style:none;
}
#container{
width:450px;
height:400px;
margin:0 auto;
border:1px solid #ccc;
border-radius: 3px;
padding:5px;
position: relative;
}
#tete{
/*en haut à gauche*/
position: absolute;
width:154px;
height:154px;
top: 4px;
left: 4px;
border: 2px solid #CCC;
padding:2px;
}
#elements{
/*en haut à droite*/
position: absolute;
top: 4px;
right: 4px;
border: 2px solid #CCC;
padding:2px;
overflow:auto;
}
#elements li{
float:left;
}
#colors{
/* en bas à droite */
position: absolute;
bottom: 4px;
right: 4px;
border: 2px solid #CCC;
padding:2px;
overflow:auto;
}
#colors li{
float:left;
}

97
assets/css/main.css Normal file
View File

@@ -0,0 +1,97 @@
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
/*font: inherit;*/
vertical-align: baseline;
}
body{
width:100%;
height:100%;
}
ul{
list-style:none;
}
#container{
width:450px;
height:400px;
margin:0 auto;
border:1px solid #ccc;
border-radius: 3px;
padding:5px;
position: relative;
}
#tete{
/*en haut à gauche*/
position: absolute;
width:154px;
height:154px;
top: 4px;
left: 4px;
border: 2px solid #CCC;
padding:2px;
}
#elements{
/*en haut à droite*/
position: absolute;
top: 4px;
right: 4px;
border: 2px solid #CCC;
padding:2px;
overflow:auto;
width: 280px;
}
#elements li{
float:left;
padding:0 10px;
}
#colors{
/* en bas à droite */
position: absolute;
bottom: 4px;
right: 4px;
border: 2px solid #CCC;
padding:2px;
overflow:auto;
width: 280px;
}
#colors li{
float:left;
padding:0 10px;
}
#element{
/* milieu droite */
position: absolute;
top: 90px;
right: 4px;
border: 2px solid #CCC;
padding:2px;
width: 280px;
height: 240px;
}
#save{
/* sous l'image */
position: absolute;
top: 180px;
left: 4px;
}
.button{
/* joli style de bouton :) */
}

2
assets/js/jquery-3.4.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

30
assets/js/main.js Normal file
View File

@@ -0,0 +1,30 @@
const save_button = document.getElementById("save");
let pseudo = document.getElementById("pseudo");
save_button.onclick = function(evt) {
evt.preventDefault();
pseudo_value = pseudo.value;
let pseudo_sha1 = sha1(pseudo_value);
let hashed_pseudo = str_split(pseudo_sha1, 7);
const elements = ['eyes', 'hair', 'mouth'];
for (let j in elements) {
let element = elements[j];
$.ajax('choix.php', {
'dataType' : 'text',
'data' : { 'element' : element, 'hash': hashed_pseudo[j] },
'success' : function(data) {
document.getElementById(element).innerSVG = data;
document.getElementById(element).innerHTML = data;
}
});
}
//
// fetch('generate.php?pseudo='+encodeURIComponent(pseudo.value), {
// method: 'get'
// })
// .then(response => response.json())
// .then(jsonData => img.src = "data:image/png;base64,"+jsonData.image)
// .catch(err => {
// //error block
// });
};

154
assets/js/sha1.js Normal file
View File

@@ -0,0 +1,154 @@
function sha1 (str) {
// discuss at: https://locutus.io/php/sha1/
// original by: Webtoolkit.info (https://www.webtoolkit.info/)
// improved by: Michael White (https://getsprink.com)
// improved by: Kevin van Zonneveld (https://kvz.io)
// input by: Brett Zamir (https://brett-zamir.me)
// note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then
// note 1: hashed. If available, we'd recommend using Node's native crypto modules directly
// note 1: in a steaming fashion for faster and more efficient hashing
// example 1: sha1('Kevin van Zonneveld')
// returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'
var hash
try {
var crypto = require('crypto')
var sha1sum = crypto.createHash('sha1')
sha1sum.update(str)
hash = sha1sum.digest('hex')
} catch (e) {
hash = undefined
}
if (hash !== undefined) {
return hash
}
var _rotLeft = function (n, s) {
var t4 = (n << s) | (n >>> (32 - s))
return t4
}
var _cvtHex = function (val) {
var str = ''
var i
var v
for (i = 7; i >= 0; i--) {
v = (val >>> (i * 4)) & 0x0f
str += v.toString(16)
}
return str
}
var blockstart
var i, j
var W = new Array(80)
var H0 = 0x67452301
var H1 = 0xEFCDAB89
var H2 = 0x98BADCFE
var H3 = 0x10325476
var H4 = 0xC3D2E1F0
var A, B, C, D, E
var temp
// utf8_encode
str = unescape(encodeURIComponent(str))
var strLen = str.length
var wordArray = []
for (i = 0; i < strLen - 3; i += 4) {
j = str.charCodeAt(i) << 24 |
str.charCodeAt(i + 1) << 16 |
str.charCodeAt(i + 2) << 8 |
str.charCodeAt(i + 3)
wordArray.push(j)
}
switch (strLen % 4) {
case 0:
i = 0x080000000
break
case 1:
i = str.charCodeAt(strLen - 1) << 24 | 0x0800000
break
case 2:
i = str.charCodeAt(strLen - 2) << 24 | str.charCodeAt(strLen - 1) << 16 | 0x08000
break
case 3:
i = str.charCodeAt(strLen - 3) << 24 |
str.charCodeAt(strLen - 2) << 16 |
str.charCodeAt(strLen - 1) <<
8 | 0x80
break
}
wordArray.push(i)
while ((wordArray.length % 16) !== 14) {
wordArray.push(0)
}
wordArray.push(strLen >>> 29)
wordArray.push((strLen << 3) & 0x0ffffffff)
for (blockstart = 0; blockstart < wordArray.length; blockstart += 16) {
for (i = 0; i < 16; i++) {
W[i] = wordArray[blockstart + i]
}
for (i = 16; i <= 79; i++) {
W[i] = _rotLeft(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1)
}
A = H0
B = H1
C = H2
D = H3
E = H4
for (i = 0; i <= 19; i++) {
temp = (_rotLeft(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff
E = D
D = C
C = _rotLeft(B, 30)
B = A
A = temp
}
for (i = 20; i <= 39; i++) {
temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff
E = D
D = C
C = _rotLeft(B, 30)
B = A
A = temp
}
for (i = 40; i <= 59; i++) {
temp = (_rotLeft(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff
E = D
D = C
C = _rotLeft(B, 30)
B = A
A = temp
}
for (i = 60; i <= 79; i++) {
temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff
E = D
D = C
C = _rotLeft(B, 30)
B = A
A = temp
}
H0 = (H0 + A) & 0x0ffffffff
H1 = (H1 + B) & 0x0ffffffff
H2 = (H2 + C) & 0x0ffffffff
H3 = (H3 + D) & 0x0ffffffff
H4 = (H4 + E) & 0x0ffffffff
}
temp = _cvtHex(H0) + _cvtHex(H1) + _cvtHex(H2) + _cvtHex(H3) + _cvtHex(H4)
return temp.toLowerCase()
}

30
assets/js/str_split.js Normal file
View File

@@ -0,0 +1,30 @@
function str_split (string, splitLength) {
// eslint-disable-line camelcase
// discuss at: https://locutus.io/php/str_split/
// original by: Martijn Wieringa
// improved by: Brett Zamir (https://brett-zamir.me)
// bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)
// revised by: Theriault (https://github.com/Theriault)
// revised by: Rafał Kukawski (https://blog.kukawski.pl)
// input by: Bjorn Roesbeke (https://www.bjornroesbeke.be/)
// example 1: str_split('Hello Friend', 3)
// returns 1: ['Hel', 'lo ', 'Fri', 'end']
if (splitLength === null) {
splitLength = 1
}
if (string === null || splitLength < 1) {
return false
}
string += ''
var chunks = []
var pos = 0
var len = string.length
while (pos < len) {
chunks.push(string.slice(pos, pos += splitLength))
}
return chunks
}