EOG/Models/TeamList.php | ●●●●● patch | view | raw | blame | history | |
EOG/Utils/TwigFactory.php | ●●●●● patch | view | raw | blame | history | |
common/base.php | ●●●●● patch | view | raw | blame | history | |
form.php | ●●●●● patch | view | raw | blame | history | |
save-teams.php | ●●●●● patch | view | raw | blame | history | |
templates/admin/form.twig | ●●●●● patch | view | raw | blame | history | |
templates/admin/stripe-form.twig | ●●●●● patch | view | raw | blame | history |
EOG/Models/TeamList.php
New file @@ -0,0 +1,70 @@ <?php namespace EOG\Models; class TeamList { /** * @var string[] Csapatok listája (előtöltve) */ protected $teams = []; private $requiredRawFields = ['name', 'seed', 'status']; public function fromJson(string $jsonString) { $rawData = json_decode($jsonString, true); if ($rawData === null) return false; if (!is_array($rawData)) { return false; } $this->teams = []; foreach ($rawData as $key => $team) { $rawKeys = array_keys($team); if (count(array_intersect($rawKeys, $this->requiredRawFields)) != 3) { continue; } if ($team['status'] == 'checkedIn') { $this->teams[] = $team; } } return (bool)count($this->teams); } public function getTeamNames() { return array_column($this->teams, 'name'); } /** * @return string[] */ public function getTeams(): array { return $this->teams; } /** * @param string[] $teams * @return TeamList */ public function setTeams(array $teams): TeamList { $this->teams = $teams; return $this; } public function getJson() { return json_encode($this->teams); } } EOG/Utils/TwigFactory.php
@@ -42,7 +42,7 @@ $loader = new FilesystemLoader($fileSystemPaths); } $twigEnvironmentOptions['cache'] = static::CACHE_DIR; //$twigEnvironmentOptions['cache'] = static::CACHE_DIR; $twigEnvironmentOptions['auto_reload'] = true; if (IS_DEV) common/base.php
New file @@ -0,0 +1,14 @@ <?php ini_set('display_errors', E_ALL); include "vendor/autoload.php"; define('IS_DEV', true); define('SITE_ROOT', dirname(__DIR__)); define('OVERLAY_DIR', dirname(SITE_ROOT) . '/overlays/'); $last_json = OVERLAY_DIR . 'last.json'; $twig = \EOG\Utils\TwigFactory::getEnvironment(SITE_ROOT); form.php
@@ -1,32 +1,12 @@ <?php ini_set('display_errors', E_ALL); include "vendor/autoload.php"; define('IS_DEV', (!isset($_SERVER['HTTP_HOST']))); define('SITE_ROOT', __DIR__); if (IS_DEV) { define('OVERLAY_DIR', dirname(__DIR__) . '/esl-overlay/'); } else { define('OVERLAY_DIR', dirname(__DIR__) . '/overlays/'); } $last_json = OVERLAY_DIR . 'last.json'; $twig = \EOG\Utils\TwigFactory::getEnvironment(SITE_ROOT); include_once "common/base.php"; $s = new \EOG\Models\Stripe(); if (!empty($_POST['stripe'])) { if (!empty($_POST['stripe'])) { $s->loadFromArray($_POST['stripe']); if (!empty($s->getState())) { if (!empty($s->getState())) { file_put_contents($last_json, $s->getJson()); } @@ -42,24 +22,28 @@ $html_content = $twig->render('templates/overlay-base.twig', ['stripe' => $s]); file_put_contents(OVERLAY_DIR . 'team-ban.html', $html_content); } else { if (file_exists($last_json)) { } else { if (file_exists($last_json)) { $raw_json = file_get_contents($last_json); $stateArray = json_decode($raw_json, true); if (is_array($stateArray)) { if (is_array($stateArray)) { $s->loadFromArray($stateArray); } } } $teams = new \EOG\Models\TeamList(); if (file_exists(OVERLAY_DIR . 'teams.json')) { var_dump($teams->fromJson(file_get_contents(OVERLAY_DIR . 'teams.json'))); } $var = [ 'stripe' => $s, 'teamNames' => $teams->getTeamNames(), 'operators' => $s->getOperators(), 'post' => !empty($_POST['stripe']) ]; echo $twig->render('templates/admin/form.twig', $var); echo $twig->render('templates/admin/stripe-form.twig', $var); save-teams.php
New file @@ -0,0 +1,20 @@ <?php include_once "common/base.php"; if (empty($_POST['json'])) { header('Location: /generator/form.php', true, 302); } $teams = new \EOG\Models\TeamList(); $success = false; if ($teams->fromJson($_POST['json'])) { $success = file_put_contents(OVERLAY_DIR . 'teams.json', $teams->getJson()); } if ($success) { header('Location: /generator/form.php', true, 302); } else { echo "Szar van a palacsintában"; } templates/admin/form.twig
File was deleted templates/admin/stripe-form.twig
New file @@ -0,0 +1,118 @@ {% extends "templates/admin/html-skeleton.twig" %} {% block body %} <form action="/generator/form.php" method="post"> <input type="hidden" name="stripe[class]" value="team-ban"/> <div class="form-group"> <div class="form-row"> <div class="col-md-8 mb-3"> <label for="validationServer01">Kupa neve</label> <input type="text" name="stripe[cup][name]" class="form-control" id="validationServer01" placeholder="Pld.: 5on5 Bomb Cup" value="{{ stripe.cup.name }}" required> </div> <div class="col-md-2 mb-3"> <label for="validationServer02">Kupa sorszám</label> <input type="text" name="stripe[cup][number]" class="form-control" id="validationServer02" placeholder="Pld.: #654" value="{{ stripe.cup.number }}" required> </div> </div> </div> <div class="form-group"> <div class="form-row"> <label for="teamname">Csapat gyorsfeltöltés:</label> <select id="teamname"> {% for teamName in teamNames %} <option value="{{ teamName }}">{{ teamName }}</option> {% endfor %} </select> <button class="btn btn-primary" title="Legyen az itt kiválasztott a kék csapat" onclick="$('#team_blue_name').val($('#teamname').val()); return false;">Legyen kék</button> <button class="btn btn-warning" title="Csapat színcsere" onclick="$('#team_orange_name').val($('#teamname').val()); return false;">Legyen narancs</button> </div> </div> <div class="form-group"> <div class="form-row"> <div class="form-group bg-primary"> <div class="col-md-12 mb-4"> <label for="team_blue_name" class="bg-primary">Kék csapat neve</label> <input type="text" name="stripe[team][blue][name]" class="form-control" id="team_blue_name" placeholder="Pld.: Impress!ve" value="{{ stripe.team.blue.name }}" required> </div> <div class="col-md-12 mb-4"> <label for="op-blue" class="bg-primary">Banolt operátorok</label> <select name="stripe[team][blue][ban][]" class="operators" id="op-blue" style="width: 100%" multiple> {% for operator in operators %} <option value="{{ operator }}" {{ operator in stripe.team.blue.ban ? "selected" }}>{{ operator|capitalize }}</option> {% endfor %} </select> </div> </div> <div class="form-group"> <button class="btn btn-info" title="Csapat színcsere" onclick="swapTeams(); return false;"><=> </button> </div> <div class="form-group bg-warning"> <div class="col-md-12 mb-4"> <label for="team_orange_name">Narancs csapat neve</label> <input type="text" name="stripe[team][orange][name]" class="form-control" id="team_orange_name" placeholder="Pld.: Opress!ve" value="{{ stripe.team.orange.name }}" required> </div> <div class="col-md-12 mb-4"> <label for="op-orange" class="bg-warning">Banolt operátorok</label> <select name="stripe[team][orange][ban][]" class="operators" id="op-orange" style="width: 100%" multiple> {% for operator in operators %} <option value="{{ operator }}" {{ operator in stripe.team.orange.ban ? "selected" }}>{{ operator|capitalize }}</option> {% endfor %} </select> </div> </div> </div> </div> <div class="form-group"> <button class="btn btn-primary mx-auto" type="submit">Overlay felülírása</button> </div> </form> <form action="/generator/save-teams.php" method="post"> <div class="form-group"> <div class="col-md-4 mb-4"> <label for="json">Csapatok API Input adatai:</label> Pld: https://api.eslgaming.com/play/v1/leagues/198846/contestants válasz eredménye <textarea class="form-control" name="json" id="json"></textarea> <button class="btn btn-secondary" type="submit">Csapatok frissítése</button> </div> </div> </form> {% endblock %} {% block lazyload %} {{ parent() }} <script type="text/javascript"> $('.operators').chosen( { 'placeholder_text_multiple': 'Banolt operátorok', 'max_selected_options': 2 } ); $('#teamname').chosen(); function swapTeams() { var blue = document.getElementById('team_blue_name'); var orange = document.getElementById('team_orange_name'); var blue_name = blue.value; blue.value = orange.value; orange.value = blue_name; return false; } </script> {% endblock %}