From 8bcebc7069df8d3622bbabfb9832ce50f2cc0572 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Sat, 13 Jan 2024 23:12:46 +0100 Subject: [PATCH] feat: make marker not hardcoded --- css/map.min.css | 1 + css/map.min.css.map | 1 + css/src/map.scss | 52 ++++++++++++++++ css/src/style.scss | 2 +- css/style.min.css | 2 +- css/style.min.css.map | 2 +- index.php | 28 ++++++++- js/map.js | 43 +++++++++---- js/nav.js | 8 +-- template/admin/index.twig | 19 ++++++ template/includes/head.twig | 117 ++++++++++++------------------------ template/map.twig | 8 ++- util/Database.php | 16 +++++ 13 files changed, 196 insertions(+), 103 deletions(-) create mode 100644 css/map.min.css create mode 100644 css/map.min.css.map create mode 100644 css/src/map.scss create mode 100644 template/admin/index.twig diff --git a/css/map.min.css b/css/map.min.css new file mode 100644 index 0000000..fe66c6d --- /dev/null +++ b/css/map.min.css @@ -0,0 +1 @@ +*{padding:0;margin:0;box-sizing:border-box}#map{height:100vh}#homeLink{position:absolute;bottom:10px;left:10px;padding:5px 10px;z-index:400;background-color:#fff;background-clip:padding-box;border:2px solid rgba(0,0,0,.2);border-radius:5px;text-decoration:none;color:#000}img.leaflet-tile{image-rendering:pixelated}.leaflet-control{color:#333}.leaflet-control-mouseposition{background:rgba(255,255,255,.8);margin:0 !important;padding:6px;width:calc(100% - 12px);text-align:end;border-top-left-radius:5px}.leaflet-marker-icon{transition:300ms}/*# sourceMappingURL=map.min.css.map */ diff --git a/css/map.min.css.map b/css/map.min.css.map new file mode 100644 index 0000000..a7c2682 --- /dev/null +++ b/css/map.min.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["src/map.scss"],"names":[],"mappings":"AAAA,EACE,UACA,SAEA,sBAKF,kBAEA,UACE,kBACA,YACA,UACA,iBACA,YAEA,sBACA,4BAEA,gCACA,kBAEA,qBACA,WAGF,iBACE,0BAGF,iBACE,WAGF,+BACE,gCAEA,oBACA,YAEA,wBAEA,eAEA,2BAGF,qBACE","file":"map.min.css"} \ No newline at end of file diff --git a/css/src/map.scss b/css/src/map.scss new file mode 100644 index 0000000..b006199 --- /dev/null +++ b/css/src/map.scss @@ -0,0 +1,52 @@ +* { + padding: 0; + margin: 0; + + box-sizing: border-box; +} + +/// old + +#map { height: 100vh; } + +#homeLink { + position: absolute; + bottom: 10px; + left: 10px; + padding: 5px 10px; + z-index: 400; + + background-color: #fff; + background-clip: padding-box; + + border: 2px solid rgba(0,0,0,0.2); + border-radius: 5px; + + text-decoration: none; + color: #000; +} + +img.leaflet-tile { + image-rendering: pixelated; +} + +.leaflet-control { + color: #333; +} + +.leaflet-control-mouseposition { + background: rgba(255, 255, 255, 0.8); + + margin: 0 !important; + padding: 6px; + + width: calc(100% - 2 * 6px); + + text-align: end; + + border-top-left-radius: 5px; +} + +.leaflet-marker-icon { + transition: 300ms; +} \ No newline at end of file diff --git a/css/src/style.scss b/css/src/style.scss index e8a6aff..2517025 100644 --- a/css/src/style.scss +++ b/css/src/style.scss @@ -314,7 +314,7 @@ a { &, > * { transition: 0.16s } - &:not(.openned) { + &:not(.opened) { opacity: 0; pointer-events: none; diff --git a/css/style.min.css b/css/style.min.css index 5b9d247..7fa88ff 100644 --- a/css/style.min.css +++ b/css/style.min.css @@ -1 +1 @@ -@import"https://fonts.googleapis.com/css2?family=Comic+Neue:wght@700&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Outfit:wght@400;500;700&display=swap";body,input{font-family:"Noto Sans","Noto Color Emoji",sans-serif}h1,h2,h3,h4,h5,h6{font-family:"Outfit","Noto Color Emoji",sans-serif;font-weight:500}.pageHero{font-family:"Comic Neue","Comic Sans MS","Noto Color Emoji",sans-serif}*{-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{overflow-x:hidden}body{margin:0;background:#fff;color:#000}@media(prefers-color-scheme: dark){body{background:#202120;color:#fff}}main{transition:.24s}main.buffering{transform:scale(1.01);transition:.16s;opacity:.4;pointer-events:none;user-select:none}main.transition{transform:scale(0.96);transition:.16s;opacity:0}.container{max-width:960px;width:100%;margin:0 auto;padding:24px;box-sizing:border-box}ul,ol{list-style-position:inside}p{line-height:1.6;opacity:.88}img{max-width:100%}.cards{display:flex;flex-wrap:wrap;gap:8px;width:100%}@media(max-width: 600px){.cards{gap:12px}}.card{position:relative;display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;height:150px;text-decoration:none;border-radius:4px;padding:8px 12px;cursor:pointer;overflow:hidden;outline:1px solid #d0d0d0;background:#f9f9f9;color:#000;transition:.24s;width:calc(33.3333333333% - 6px)}@media(prefers-color-scheme: dark){.card{outline-color:#575757;background:#272727;color:#fff}}.card:hover{outline-width:2px;outline-color:#d0dfd0;background:#f9fff9;color:#527d52;transition:.08s}@media(prefers-color-scheme: dark){.card:hover{outline-color:#575f57;background:#272f27;color:#d0dfd0}}.card:hover .icon{transition:.48s;transform:scale(1.2)}@media(max-width: 800px){.card{width:calc(50% - 4px)}}@media(max-width: 600px){.card{border-radius:8px;width:100%}}.card h1{margin:0;font-size:1.2em;font-weight:400}.card .icon{position:absolute;top:0;right:0;height:100%;aspect-ratio:1/1;object-fit:cover;mask-image:linear-gradient(to right, transparent, rgba(255, 0, 0, 0.3));transition:.64s}@media(prefers-color-scheme: dark){.card .icon{mask-image:linear-gradient(to right, transparent, rgba(255, 0, 0, 0.1))}}.card p{margin:8px 0}a{color:#527d52}@media(prefers-color-scheme: dark){a{color:#d0dfd0}}a:visited{opacity:.9}.pageHero{background-image:linear-gradient(rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.9)),url("/img/Panorama-Lens-Blur.png");background-position:center;background-size:cover;height:220px}@media(prefers-color-scheme: dark){.pageHero{background-image:linear-gradient(rgba(16, 22, 16, 0.9), rgba(16, 22, 16, 0.9)),url("/img/Panorama-Lens-Blur.png")}}.pageHero>.container{height:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between}@media(max-width: 600px){.pageHero>.container{justify-content:center}}.pageHero>.container>div{display:flex;flex-direction:column;gap:12px}.pageHero>.container>div.Branding{align-items:flex-start}@media(max-width: 600px){.pageHero>.container>div.Branding{align-items:center}}@media(prefers-color-scheme: dark){.pageHero>.container>div.Branding img{filter:invert(1)}}.pageHero>.container>div.Branding span{font-size:24px;opacity:.75}.pageHero>.container>div.Server-Information{align-items:center;gap:4px}@media(max-width: 600px){.pageHero>.container>div.Server-Information{display:none}}.pageHero>.container>div.Server-Information input{text-align:center;font-size:24px}.pageHero>.container>div.Server-Information input:not(:hover,:focus){color:inherit;border-color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.navToggle{z-index:10;position:fixed;top:8px;right:8px;font-size:18px;background:#527d52;color:#fff;padding:8px 24px;border-radius:32px;font-weight:bold;user-select:none;cursor:pointer}@media(min-width: 601px){.navToggle{display:none}}@media(prefers-color-scheme: dark){.navToggle{background:#527d52;color:#fff}}.pageNav{width:100%;border:solid #d0dfd0;border-width:0 0 1px 0;background:#f9fff9}@media(prefers-color-scheme: dark){.pageNav{border-color:#575f57;background:#272f27}}.pageNav>.container{padding:16px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}@media(max-width: 600px){.pageNav>.container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9;backdrop-filter:blur(15px);background:rgba(249,255,249,.86);justify-content:center;flex-direction:column;gap:64px}}@media(max-width: 600px)and (prefers-color-scheme: dark){.pageNav>.container{background:rgba(39,47,39,.9)}}@media(max-width: 600px){.pageNav>.container,.pageNav>.container>*{transition:.16s}.pageNav>.container:not(.openned){opacity:0;pointer-events:none}.pageNav>.container:not(.openned)>*{transform:translateX(32px)}}.pageNav>.container>div{margin:0;display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px}@media(max-width: 600px){.pageNav>.container>div{width:100%;flex-direction:column}}.pageNav>.container>div>a{font-family:Outfit;user-select:none;font-size:16px;box-sizing:border-box;color:#7e9e7e;text-decoration:none;padding:6px 20px;border-radius:32px;outline:solid rgba(0,0,0,0) 2px;transition:.24s}@media(prefers-color-scheme: dark){.pageNav>.container>div>a{color:#7e9e7e}}@media(max-width: 600px){.pageNav>.container>div>a{font-size:28px;outline:none;padding:8px 32px;text-align:end}.pageNav>.container>div>a.active::before{content:"➤"}}.pageNav>.container>div>a.active{pointer-events:none}.pageNav>.container>div>a:hover,.pageNav>.container>div>a.active{color:#527d52;outline-color:#d0dfd0;transition:.08s}@media(prefers-color-scheme: dark){.pageNav>.container>div>a:hover,.pageNav>.container>div>a.active{color:#defede;outline-color:#707f70}}@media(min-width: 601px){.pageNav>.container>div>a.buttonPrimary{background:#527d52;color:#fff;font-weight:700 !important}}@media(min-width: 601px)and (prefers-color-scheme: dark){.pageNav>.container>div>a.buttonPrimary{background:#527d52;color:#fff}}.pageFooter{opacity:.8}.pageFooter>.SNS-Links{display:flex;flex-wrap:wrap;gap:16px}.pageFooter>.SNS-Links>a{display:flex;gap:8px;font-size:18px;color:inherit}.pageFooter>.SNS-Links>a img{width:1em}@media(prefers-color-scheme: dark){.pageFooter>.SNS-Links>a img{filter:invert(1)}}.pageFooter>.SNS-Links>a:not(:hover,:focus){text-decoration:none}/*# sourceMappingURL=style.min.css.map */ +@import"https://fonts.googleapis.com/css2?family=Comic+Neue:wght@700&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Outfit:wght@400;500;700&display=swap";body,input{font-family:"Noto Sans","Noto Color Emoji",sans-serif}h1,h2,h3,h4,h5,h6{font-family:"Outfit","Noto Color Emoji",sans-serif;font-weight:500}.pageHero{font-family:"Comic Neue","Comic Sans MS","Noto Color Emoji",sans-serif}*{-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{overflow-x:hidden}body{margin:0;background:#fff;color:#000}@media(prefers-color-scheme: dark){body{background:#202120;color:#fff}}main{transition:.24s}main.buffering{transform:scale(1.01);transition:.16s;opacity:.4;pointer-events:none;user-select:none}main.transition{transform:scale(0.96);transition:.16s;opacity:0}.container{max-width:960px;width:100%;margin:0 auto;padding:24px;box-sizing:border-box}ul,ol{list-style-position:inside}p{line-height:1.6;opacity:.88}img{max-width:100%}.cards{display:flex;flex-wrap:wrap;gap:8px;width:100%}@media(max-width: 600px){.cards{gap:12px}}.card{position:relative;display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;height:150px;text-decoration:none;border-radius:4px;padding:8px 12px;cursor:pointer;overflow:hidden;outline:1px solid #d0d0d0;background:#f9f9f9;color:#000;transition:.24s;width:calc(33.3333333333% - 6px)}@media(prefers-color-scheme: dark){.card{outline-color:#575757;background:#272727;color:#fff}}.card:hover{outline-width:2px;outline-color:#d0dfd0;background:#f9fff9;color:#527d52;transition:.08s}@media(prefers-color-scheme: dark){.card:hover{outline-color:#575f57;background:#272f27;color:#d0dfd0}}.card:hover .icon{transition:.48s;transform:scale(1.2)}@media(max-width: 800px){.card{width:calc(50% - 4px)}}@media(max-width: 600px){.card{border-radius:8px;width:100%}}.card h1{margin:0;font-size:1.2em;font-weight:400}.card .icon{position:absolute;top:0;right:0;height:100%;aspect-ratio:1/1;object-fit:cover;mask-image:linear-gradient(to right, transparent, rgba(255, 0, 0, 0.3));transition:.64s}@media(prefers-color-scheme: dark){.card .icon{mask-image:linear-gradient(to right, transparent, rgba(255, 0, 0, 0.1))}}.card p{margin:8px 0}a{color:#527d52}@media(prefers-color-scheme: dark){a{color:#d0dfd0}}a:visited{opacity:.9}.pageHero{background-image:linear-gradient(rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.9)),url("/img/Panorama-Lens-Blur.png");background-position:center;background-size:cover;height:220px}@media(prefers-color-scheme: dark){.pageHero{background-image:linear-gradient(rgba(16, 22, 16, 0.9), rgba(16, 22, 16, 0.9)),url("/img/Panorama-Lens-Blur.png")}}.pageHero>.container{height:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between}@media(max-width: 600px){.pageHero>.container{justify-content:center}}.pageHero>.container>div{display:flex;flex-direction:column;gap:12px}.pageHero>.container>div.Branding{align-items:flex-start}@media(max-width: 600px){.pageHero>.container>div.Branding{align-items:center}}@media(prefers-color-scheme: dark){.pageHero>.container>div.Branding img{filter:invert(1)}}.pageHero>.container>div.Branding span{font-size:24px;opacity:.75}.pageHero>.container>div.Server-Information{align-items:center;gap:4px}@media(max-width: 600px){.pageHero>.container>div.Server-Information{display:none}}.pageHero>.container>div.Server-Information input{text-align:center;font-size:24px}.pageHero>.container>div.Server-Information input:not(:hover,:focus){color:inherit;border-color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.navToggle{z-index:10;position:fixed;top:8px;right:8px;font-size:18px;background:#527d52;color:#fff;padding:8px 24px;border-radius:32px;font-weight:bold;user-select:none;cursor:pointer}@media(min-width: 601px){.navToggle{display:none}}@media(prefers-color-scheme: dark){.navToggle{background:#527d52;color:#fff}}.pageNav{width:100%;border:solid #d0dfd0;border-width:0 0 1px 0;background:#f9fff9}@media(prefers-color-scheme: dark){.pageNav{border-color:#575f57;background:#272f27}}.pageNav>.container{padding:16px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}@media(max-width: 600px){.pageNav>.container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9;backdrop-filter:blur(15px);background:rgba(249,255,249,.86);justify-content:center;flex-direction:column;gap:64px}}@media(max-width: 600px)and (prefers-color-scheme: dark){.pageNav>.container{background:rgba(39,47,39,.9)}}@media(max-width: 600px){.pageNav>.container,.pageNav>.container>*{transition:.16s}.pageNav>.container:not(.opened){opacity:0;pointer-events:none}.pageNav>.container:not(.opened)>*{transform:translateX(32px)}}.pageNav>.container>div{margin:0;display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px}@media(max-width: 600px){.pageNav>.container>div{width:100%;flex-direction:column}}.pageNav>.container>div>a{font-family:Outfit;user-select:none;font-size:16px;box-sizing:border-box;color:#7e9e7e;text-decoration:none;padding:6px 20px;border-radius:32px;outline:solid rgba(0,0,0,0) 2px;transition:.24s}@media(prefers-color-scheme: dark){.pageNav>.container>div>a{color:#7e9e7e}}@media(max-width: 600px){.pageNav>.container>div>a{font-size:28px;outline:none;padding:8px 32px;text-align:end}.pageNav>.container>div>a.active::before{content:"➤"}}.pageNav>.container>div>a.active{pointer-events:none}.pageNav>.container>div>a:hover,.pageNav>.container>div>a.active{color:#527d52;outline-color:#d0dfd0;transition:.08s}@media(prefers-color-scheme: dark){.pageNav>.container>div>a:hover,.pageNav>.container>div>a.active{color:#defede;outline-color:#707f70}}@media(min-width: 601px){.pageNav>.container>div>a.buttonPrimary{background:#527d52;color:#fff;font-weight:700 !important}}@media(min-width: 601px)and (prefers-color-scheme: dark){.pageNav>.container>div>a.buttonPrimary{background:#527d52;color:#fff}}.pageFooter{opacity:.8}.pageFooter>.SNS-Links{display:flex;flex-wrap:wrap;gap:16px}.pageFooter>.SNS-Links>a{display:flex;gap:8px;font-size:18px;color:inherit}.pageFooter>.SNS-Links>a img{width:1em}@media(prefers-color-scheme: dark){.pageFooter>.SNS-Links>a img{filter:invert(1)}}.pageFooter>.SNS-Links>a:not(:hover,:focus){text-decoration:none}/*# sourceMappingURL=style.min.css.map */ diff --git a/css/style.min.css.map b/css/style.min.css.map index 317abfa..4f8d3af 100644 --- a/css/style.min.css.map +++ b/css/style.min.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["src/_fonts.scss","src/style.scss","src/colors/_light.scss","src/colors/_dark.scss"],"names":[],"mappings":"CAEQ,qKAER,WACE,sDAGF,kBACE,mDACA,gBAIF,UACE,uECXF,EACC,0CAGD,4BAEA,KACE,SAEA,WCXO,KDYP,MCXO,KDaP,mCANF,KAOI,WEfK,QFgBL,MEfK,MFmBT,KACC,gBAEA,eACC,sBACA,gBACA,WACA,oBACA,iBAGD,gBACC,sBACA,gBACA,UAIF,WACE,gBAEA,WAEA,cAEA,aACA,sBAGF,MACE,2BAGF,EACE,gBACA,YAGF,IACE,eAGF,OACC,aACA,eACA,QACA,WAEA,yBAND,OAOE,UAIF,MACC,kBACA,aACA,sBACA,sBACA,eACA,aACC,qBACA,kBACA,iBACA,eACA,gBAED,0BACC,WCzEa,QD0Eb,MCvFO,KD+FP,gBAsBD,iCA5BC,mCAjBF,MAkBI,cE3Ee,QF4Ef,WE9EW,QF+EZ,ME5FM,MFiGP,YACC,kBACA,cCxFS,QDyFT,WC1FK,QD2FL,MCnGM,QD2GP,gBANC,mCAND,YAOG,cE7FO,QF8FP,WE/FG,QFgGJ,MEvGQ,SF4GT,kBACC,gBACA,qBAMF,yBA/CF,MAgDE,uBAGD,yBAnDD,MAoDG,kBACD,YAGA,SACC,SACA,gBACA,gBAGD,YACC,kBACA,MACA,QACA,YACA,iBACA,iBAEA,wEAKA,gBAJA,mCATD,YAUE,yEAMF,QACC,aAIH,EACE,MC1JO,QD4JP,mCAHF,EAII,ME5JQ,SF+JV,UACE,WAIJ,UACE,iBACE,uGASF,2BACA,sBAEA,aATA,mCALF,UAMI,iBACA,kGASF,qBACE,YAEA,aACA,mBAEA,mBACA,8BAEA,yBATF,qBAUI,wBAGF,yBACE,aACA,sBAEA,SAEA,kCACE,uBAEA,yBAHF,kCAII,oBAGF,mCACE,wDAGF,uCACE,eACA,YAIJ,4CAKE,mBACA,QALA,yBADF,4CAEI,cAMF,kDACE,kBACA,eAEA,qEACE,cACA,2BACA,yBAQZ,WAIE,WAEA,eACA,QACA,UACA,eAEA,WC3PO,QD4PP,MCxPY,KD+PZ,iBAEA,mBAEA,iBACA,iBAEA,eAzBA,yBADF,WAEI,cAYF,mCAdF,WAeG,WE/PM,QFgQN,ME5PW,MFyQd,SACE,WAEA,qBACA,uBAEA,WC3QM,QD6QN,mCARF,SASI,aE7QQ,QF8QR,WE/QI,SFkRN,oBACE,kBAEA,aACA,eAEA,mBACA,8BAEA,yBATF,oBAUI,eACA,MACA,OACA,WACA,YACA,UAEF,2BACC,iCAKA,uBACC,sBACA,UANF,yDAnBF,oBAoBI,8BAXF,yBAkBE,0DAEA,kCACE,UACA,oBAGA,gEAIJ,wBACE,SAEA,aACA,eACA,qBAEA,QAEA,yBATF,wBAUG,WACC,uBAGF,0BACE,mBACA,iBAEA,eACA,sBACA,MC7Ta,QD4Ub,qBAEA,iBAEA,mBAEA,gCAEA,gBAtBA,mCAPF,0BAOwC,MElUzB,SFoUb,yBATF,0BAUI,eACA,aACA,iBACA,eAEA,yCACC,aAeH,iCACC,oBAGD,iEAEE,MCnXD,QDoXC,cC9VY,QDsWZ,gBANA,mCALF,iEAMI,MEnWS,QFoWT,cEtWU,SF6Wd,yBACC,wCACE,WCjYF,QDkYE,MC9XG,KDqYH,4BALA,yDAJF,wCAKI,WErYJ,QFsYI,MElYC,MFiZd,YACE,WAEA,uBACE,aACA,eACA,SAEA,yBACE,aACA,QAEA,eAEA,cAEA,6BACE,UAEA,mCAHF,6BAII,kBAIJ,4CACE","file":"style.min.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["src/_fonts.scss","src/style.scss","src/colors/_light.scss","src/colors/_dark.scss"],"names":[],"mappings":"CAEQ,qKAER,WACE,sDAGF,kBACE,mDACA,gBAIF,UACE,uECXF,EACC,0CAGD,4BAEA,KACE,SAEA,WCXO,KDYP,MCXO,KDaP,mCANF,KAOI,WEfK,QFgBL,MEfK,MFmBT,KACC,gBAEA,eACC,sBACA,gBACA,WACA,oBACA,iBAGD,gBACC,sBACA,gBACA,UAIF,WACE,gBAEA,WAEA,cAEA,aACA,sBAGF,MACE,2BAGF,EACE,gBACA,YAGF,IACE,eAGF,OACC,aACA,eACA,QACA,WAEA,yBAND,OAOE,UAIF,MACC,kBACA,aACA,sBACA,sBACA,eACA,aACC,qBACA,kBACA,iBACA,eACA,gBAED,0BACC,WCzEa,QD0Eb,MCvFO,KD+FP,gBAsBD,iCA5BC,mCAjBF,MAkBI,cE3Ee,QF4Ef,WE9EW,QF+EZ,ME5FM,MFiGP,YACC,kBACA,cCxFS,QDyFT,WC1FK,QD2FL,MCnGM,QD2GP,gBANC,mCAND,YAOG,cE7FO,QF8FP,WE/FG,QFgGJ,MEvGQ,SF4GT,kBACC,gBACA,qBAMF,yBA/CF,MAgDE,uBAGD,yBAnDD,MAoDG,kBACD,YAGA,SACC,SACA,gBACA,gBAGD,YACC,kBACA,MACA,QACA,YACA,iBACA,iBAEA,wEAKA,gBAJA,mCATD,YAUE,yEAMF,QACC,aAIH,EACE,MC1JO,QD4JP,mCAHF,EAII,ME5JQ,SF+JV,UACE,WAIJ,UACE,iBACE,uGASF,2BACA,sBAEA,aATA,mCALF,UAMI,iBACA,kGASF,qBACE,YAEA,aACA,mBAEA,mBACA,8BAEA,yBATF,qBAUI,wBAGF,yBACE,aACA,sBAEA,SAEA,kCACE,uBAEA,yBAHF,kCAII,oBAGF,mCACE,wDAGF,uCACE,eACA,YAIJ,4CAKE,mBACA,QALA,yBADF,4CAEI,cAMF,kDACE,kBACA,eAEA,qEACE,cACA,2BACA,yBAQZ,WAIE,WAEA,eACA,QACA,UACA,eAEA,WC3PO,QD4PP,MCxPY,KD+PZ,iBAEA,mBAEA,iBACA,iBAEA,eAzBA,yBADF,WAEI,cAYF,mCAdF,WAeG,WE/PM,QFgQN,ME5PW,MFyQd,SACE,WAEA,qBACA,uBAEA,WC3QM,QD6QN,mCARF,SASI,aE7QQ,QF8QR,WE/QI,SFkRN,oBACE,kBAEA,aACA,eAEA,mBACA,8BAEA,yBATF,oBAUI,eACA,MACA,OACA,WACA,YACA,UAEF,2BACC,iCAKA,uBACC,sBACA,UANF,yDAnBF,oBAoBI,8BAXF,yBAkBE,0DAEA,iCACE,UACA,oBAGA,+DAIJ,wBACE,SAEA,aACA,eACA,qBAEA,QAEA,yBATF,wBAUG,WACC,uBAGF,0BACE,mBACA,iBAEA,eACA,sBACA,MC7Ta,QD4Ub,qBAEA,iBAEA,mBAEA,gCAEA,gBAtBA,mCAPF,0BAOwC,MElUzB,SFoUb,yBATF,0BAUI,eACA,aACA,iBACA,eAEA,yCACC,aAeH,iCACC,oBAGD,iEAEE,MCnXD,QDoXC,cC9VY,QDsWZ,gBANA,mCALF,iEAMI,MEnWS,QFoWT,cEtWU,SF6Wd,yBACC,wCACE,WCjYF,QDkYE,MC9XG,KDqYH,4BALA,yDAJF,wCAKI,WErYJ,QFsYI,MElYC,MFiZd,YACE,WAEA,uBACE,aACA,eACA,SAEA,yBACE,aACA,QAEA,eAEA,cAEA,6BACE,UAEA,mCAHF,6BAII,kBAIJ,4CACE","file":"style.min.css"} \ No newline at end of file diff --git a/index.php b/index.php index 7a954e6..4f0d546 100644 --- a/index.php +++ b/index.php @@ -33,9 +33,10 @@ $json = json_decode($res->body, true); - if($json != null) { + if($json != null) $twig->addGlobal('playerCount', count($json)); - } + else + $twig->addGlobal('playerCount', $json); $twig->addGlobal('nations', $nations); @@ -66,9 +67,10 @@ }); $router->get('/map', function() { - global $twig; + global $twig, $mysql; $twig->addGlobal('pageUri', '/map'); + $twig->addGlobal('markers', json_encode($mysql->getMarkers())); if(isset($_GET['center'])) $twig->addGlobal('center', $_GET['center']); @@ -124,6 +126,26 @@ } }); + // ---------------- Admin ---------------- // + + $router->get('/admin', function() { + global $twig, $mysql; + + $twig->addGlobal('pageUri', '/admin'); + + $user = $mysql->getUserRecordFromId($_SESSION['user']['id']); + + if($user == null && $user['admin'] == 0) { + http_response_code(404); + + echo $twig->render('404.twig'); + } else { + echo $twig->render('admin/index.twig', array('db_data' => $user)); + } + }); + + // ----------------- 404 ----------------- // + $router->set404(function() { global $twig; diff --git a/js/map.js b/js/map.js index 9b569cb..e4a08f8 100644 --- a/js/map.js +++ b/js/map.js @@ -36,21 +36,40 @@ let mapLayer = L.tileLayer.crssLayer('https://cdn.theclashfruit.me/crss/map_new/ zoomOffset: -8 }); -let ropMarkers = L.layerGroup([ - L.marker([-75.5, 49.5]) - .bindPopup('Info Centre') -]); +let ropMarkers = L.layerGroup([]); -let drrMarkers = L.layerGroup([ +let drrMarkers = L.layerGroup([]); -]); +let miscMarkers = L.layerGroup([]); -let miscMarkers = L.layerGroup([ - L.marker([0.5, 0.5]) - .bindPopup('0; 0'), - L.marker([1302.5, -661.5]) - .bindPopup('The Dropper'), -]); +markers.forEach(marker => { + const coords = marker.data.split(';'); + + switch (marker.category) { + case 'rop': + ropMarkers + .addLayer( + L.marker([ + parseInt(coords[0]), parseInt(coords[1]) + ]).bindPopup(marker.name) + ); + break; + case 'drr': + drrMarkers.addLayer( + L.marker([ + parseInt(coords[0]), parseInt(coords[1]) + ]).bindPopup(marker.name) + ); + break; + default: + miscMarkers.addLayer( + L.marker([ + parseInt(coords[0]), parseInt(coords[1]) + ]).bindPopup(marker.name) + ); + break; + } +}); let playerMarkers = L.layerGroup([ diff --git a/js/nav.js b/js/nav.js index 8b04e49..05171c4 100644 --- a/js/nav.js +++ b/js/nav.js @@ -4,15 +4,15 @@ const navToggle = $(".navToggle"); const menu = $(".pageNav > .container"); navToggle.onclick = () => { - const menuToggled = menu.classList.contains("openned"); + const menuToggled = menu.classList.contains("opened"); if (menuToggled) { - menu.classList.remove("openned"); + menu.classList.remove("opened"); } else { - menu.classList.add("openned"); + menu.classList.add("opened"); } navToggle.innerHTML = menuToggled ? "Menu" : "Close"; } -window.addEventListener("transitionBuffering", () => menu.classList.remove("openned")); \ No newline at end of file +window.addEventListener("transitionBuffering", () => menu.classList.remove("opened")); \ No newline at end of file diff --git a/template/admin/index.twig b/template/admin/index.twig new file mode 100644 index 0000000..4acf566 --- /dev/null +++ b/template/admin/index.twig @@ -0,0 +1,19 @@ + + + + + + + + Admin Panel + + + + +
+

soon

+
+ + + + \ No newline at end of file diff --git a/template/includes/head.twig b/template/includes/head.twig index 41f8edf..3071b9e 100644 --- a/template/includes/head.twig +++ b/template/includes/head.twig @@ -1,89 +1,48 @@ -{% if reduced %} {{ pageTitle }}  •  Clyde's Real Survival SMP {% endif %} -{% if not reduced %} - - - - - - - - {{ pageTitle }}  •  Clyde's Real Survival SMP +{% if reduced %} + {{ pageTitle }} • Clyde's Real Survival SMP +{% else %} + + + + - - - - + - - - - - - - + {{ pageTitle }} • Clyde's Real Survival SMP - - - - - - + + + + - + + + + + + + - {% if pageTitle == 'Map' %} - - - + + + + + + - - {% endif %} - - - - - {% endif %} \ No newline at end of file + + + + +{% endif %} \ No newline at end of file diff --git a/template/map.twig b/template/map.twig index 5167a7b..9f8f29c 100644 --- a/template/map.twig +++ b/template/map.twig @@ -1,9 +1,13 @@ {% include 'includes/head.twig' with {'pageTitle': 'Map'} %}
-Go Home - + + {% include 'includes/foot.twig' %} \ No newline at end of file diff --git a/util/Database.php b/util/Database.php index 94580aa..b6988a8 100644 --- a/util/Database.php +++ b/util/Database.php @@ -57,4 +57,20 @@ return null; } } + + function getMarkers() { + $sql = 'SELECT * FROM markers'; + + $stmt = $this->conn->prepare($sql); + + $stmt->execute(); + + $res = $stmt->get_result(); + + if($res->num_rows > 0) { + return $res->fetch_all(MYSQLI_ASSOC); + } else { + return null; + } + } } \ No newline at end of file