La til epost knapp

This commit is contained in:
Trygve 2025-10-28 23:46:42 +01:00
parent 4cc7ff821c
commit fdddbbb0ef
8 changed files with 46 additions and 7 deletions

View File

@ -46,6 +46,13 @@
<button type="submit">Søk</button> <button type="submit">Søk</button>
</form> </form>
<div id="runner_info" class="profile-card"></div> <div id="runner_info" class="profile-card"></div>
<button hx-get="/api/email.php" hx-target="#emails" hx-headers='js:{"password": localStorage.getItem("passord")}'>hent alle eposter</button>
<button hx-get="/api/email.php?course=Kadaverløpet" hx-target="#emails" hx-headers='js:{"password": localStorage.getItem("passord")}'>Hent bare eposter for fullkadavern</button>
<button hx-get="/api/email.php?course=Minikadaver'n" hx-target="#emails" hx-headers='js:{"password": localStorage.getItem("passord")}'>Hent bare eposter for minikadaver'n</button>
<div class="flash default">
<output id="emails"></output>
</div>
<h1>Løpende resultater</h1> <h1>Løpende resultater</h1>
<?php <?php
include("api/table.php"); include("api/table.php");
@ -83,6 +90,6 @@ liveresult_table($runners);
} }
</script> </script>
<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.8/dist/htmx.min.js" integrity="sha384-/TgkGk7p307TH7EXJDuUlgG3Ce1UVolAOFopFekQkkXihi5u/6OCvVKyz1W+idaz" crossorigin="anonymous"></script> <script src="/lib/htmx.min.js"></script>
</body> </body>
</html> </html>

View File

@ -13,7 +13,7 @@ function write_ini_file($assoc_array, $path) {
} }
$content .= "\n"; $content .= "\n";
} }
file_put_contents($path, $content); file_put_contents($path, data: $content);
} }
$config = parse_ini_file("$documentRoot/data/config.ini"); $config = parse_ini_file("$documentRoot/data/config.ini");
@ -31,7 +31,8 @@ if ($method == "POST") {
$file = "$documentRoot/data/config.ini"; $file = "$documentRoot/data/config.ini";
$config["start_date"] = $start_time . "+01"; $config["start_date"] = $start_time . "+01";
write_ini_file($config, $file); write_ini_file($config, $file);
header("Location: $documentRoot/config_editor.html"); header("HX-Replace-Url: false");
echo("Starttida er oppdatert til: $start_time");
} }
} }
elseif ($method == "GET"){ elseif ($method == "GET"){

25
api/email.php Normal file
View File

@ -0,0 +1,25 @@
<?php
$documentRoot = $_SERVER['DOCUMENT_ROOT'];
include("$documentRoot/import_runners.php");
$hash = file_get_contents("$documentRoot/data/hash.txt");
$method = $_SERVER['REQUEST_METHOD'];
if ($method == "GET") {
parse_str($_SERVER['QUERY_STRING'], $query);
$course = $query['course'];
$password = getallheaders()['password'];
if (!password_verify($password, $hash)) {
http_response_code(response_code: 401);
}
$runners = read_runners_from_csv();
$emails = "";
for ($i = 0; $i < count($runners); $i++) {
$email = $runners[$i]->email;
if (!isset($query['course'])){
$emails .= "$email, ";
}
elseif ($course == $runners[$i]->course) {
$emails .= "$email, ";
}
}
echo($emails);
}

View File

@ -23,6 +23,8 @@ if ($method == "POST") {
else { else {
$file = "$documentRoot/data/db.csv"; $file = "$documentRoot/data/db.csv";
file_put_contents($file, $line, FILE_APPEND); file_put_contents($file, $line, FILE_APPEND);
header("HX-Replace-Url: false");
echo("Løper lagt til: $line");
} }
} }
if ($method == "GET") { if ($method == "GET") {

View File

@ -24,7 +24,7 @@
</nav> </nav>
<h2>Sett dato og tid startskuddet gikk:</h2> <h2>Sett dato og tid startskuddet gikk:</h2>
<form action="/api/config.php" method="POST"> <form action="/api/config.php" method="POST" hx-boost="true" hx-target="#updated" hx-swap="show:none">
<input style="display: none;" type="text" id="password" name="password" required> <input style="display: none;" type="text" id="password" name="password" required>
<label> <label>
Dato og tid Dato og tid
@ -32,7 +32,7 @@
</label> </label>
<button type="submit">Oppdater</button> <button type="submit">Oppdater</button>
</form> </form>
<div id="updated"></div>
</div> </div>
<script> <script>
function log_out(){ function log_out(){
@ -57,5 +57,6 @@
console.log(xmlHttpReq.response) console.log(xmlHttpReq.response)
</script> </script>
<script src="/lib/htmx.min.js"></script>
</body> </body>
</html> </html>

View File

@ -23,7 +23,7 @@
</menu> </menu>
</nav> </nav>
<h2>Legg til løper</h2> <h2>Legg til løper</h2>
<form action="/api/runner.php" method="POST"> <form action="/api/runner.php" method="POST" hx-boost="true" hx-target="#updated" hx-swap="show:none">
<input style="display: none;" type="text" id="password" name="password" required> <input style="display: none;" type="text" id="password" name="password" required>
<label for="id">Startnummer: <label for="id">Startnummer:
@ -51,6 +51,7 @@
</form> </form>
</div> </div>
<div id="updated"></div>
<script> <script>
function log_out(){ function log_out(){
localStorage.removeItem("navn"); localStorage.removeItem("navn");
@ -69,5 +70,6 @@
document.getElementById('password').value = localStorage.getItem("passord"); document.getElementById('password').value = localStorage.getItem("passord");
</script> </script>
<script src="/lib/htmx.min.js"></script>
</body> </body>
</html> </html>

1
lib/htmx.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@
<figure><img src="img/kadaver.png" alt="" width="100px" class="invert"></figure> <figure><img src="img/kadaver.png" alt="" width="100px" class="invert"></figure>
<h1>Påmeldte Kadaverløpet 2025</h1> <h1>Påmeldte Kadaverløpet 2025</h1>
</div> </div>
<h2>Oppdatert 24.10.25</h2> <h2>Oppdatert 28.10.25</h2>
<div class="flash attention">Startnummer blir tildelt nærmere arrangementet. Prøver å oppdatere lista jevnlig. TBN</div> <div class="flash attention">Startnummer blir tildelt nærmere arrangementet. Prøver å oppdatere lista jevnlig. TBN</div>
<?php <?php
$query = ["type"=>"paameldte"]; $query = ["type"=>"paameldte"];