WowPress-Tailwind/theme/pages/roster.php

140 lines
8.6 KiB
PHP

<?php
use WoWPress\Api\BattleNet;
use WoWPress\Database\Cache;
use WoWPress\Frontend\Icon;
use WoWPress\Models\Character;
use WoWPress\Models\User;
global $widget_area;
set_sidebar_status('top', false);
$characters = Character::orderBy('rank')->get();
get_header();
?>
<div class="top-title flex flex-row gap-2" style="margin-top:calc(-1 * var(--wowp-gap))">
<div class="text-3xl font-bold bg-glass shadow p-3 text-center w-full">
<?= $GLOBALS['wowpress']['page_title'] ?>
</div>
</div>
<section id="primary">
<main id="main">
<div class="bg-glass shadow p-auto">
<table class="table-auto w-full">
<thead class="bg-glass">
<tr>
<td class="p-auto">Name</td>
<td class="p-auto hidden lg:table-cell">Klasse</td>
<td class="p-auto hidden lg:table-cell">Rang</td>
<td class="p-auto hidden lg:table-cell">Server</td>
<td class="p-auto hidden lg:table-cell">Gilde</td>
<?php if (current_user_can('wowpress_edit_characters')) : ?>
<td class="p-auto hidden lg:table-cell">
User
</td>
<td class="p-auto">Aktionen</td>
<?php endif; ?>
</tr>
</thead>
<tbody class="bg-slate-900">
<?php foreach ($characters as $char) : ?>
<tr class="text-<?= $char->color ?> even:bg-slate-800">
<td class="p-auto">
<div class="flex flex-row gap-2 items-center">
<img class="w-[42px] aspect-1 rounded-full" src="<?= $char->avatar ?>" alt="">
<span><?= $char->name ?></span>
</div>
</td>
<td class="p-auto hidden lg:table-cell">
<div class="flex flex-row gap-2 items-center">
<img class="w-[30px] aspect-1 rounded-full" src="<?= $char->class_icon ?>" alt="">
<img class="w-[30px] aspect-1 rounded-full" src="<?= $char->spec_icon ?>" alt="">
<span><?= translate_string($char->class) ?> -
<?= translate_string($char->spec) ?></span>
</div>
</td>
<td class="p-auto hidden lg:table-cell"><?= $char->rank ?></td>
<td class="p-auto hidden lg:table-cell"><?= $char->realm ?></td>
<td class="p-auto hidden lg:table-cell"><?= $char->guild ?></td>
<?php if (current_user_can('wowpress_edit_characters')) : ?>
<td class="p-auto hidden lg:table-cell">
<form action="/request" method="POST">
<input type="hidden" name="char_id" value="<?= $char->ID ?>">
<?php wp_nonce_field('changeUser', 'changeUser_nonce'); ?>
<input type="hidden" name="action" value="changeUser">
<div class="flex flex-row">
<div x-data="{ open: false, uid: '<?= $char->user ? $char->user->ID : "0" ?>' , selected: '<?= $char->user ? $char->user->login : "" ?>' }" @click.away="open = false" class="relative">
<input type="hidden" name="uid" x-model="uid">
<!-- Button -->
<button type="button" @click="open = !open" class="min-w-[180px] max-w-[180px] h-full px-4 py-2 border-e-0 border border-<?= $char->color ?> flex items-center justify-between" :class="{'text-<?= $char->color ?>': selected !== '', 'text-gray-500': selected === ''}">
<span class="max-w-[120px] overflow-hidden" x-text="selected === '' ? 'Kein User' : selected"></span>
<svg class="ml-2 w-4 h-4" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
</svg>
</button>
<!-- Dropdown Menu -->
<div x-show="open" class="absolute mt-2 bg-glass border border-<?= $char->color ?> w-full z-10" x-cloak>
<ul class="max-h-[240px] overflow-auto [&>li]:text-slate-200 [&>li]:px-4 [&>li]:py-2 hover:[&>li]:bg-slate-600 [&>li]:cursor-pointer">
<li @click="selected = ''; uid='0'; open = false;" value="0">Kein User</li>
<?php foreach (User::all() as $user) : ?>
<li @click="selected = '<?= $user->login ?>'; uid = '<?= $user->ID ?>'; open = false;" value="<?= $user->ID ?>"><?= $user->login ?></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<button type="submit" class="btn btn-<?= $char->color ?>"><?= Icon::get('o-user-plus') ?></button>
</div>
</form>
</td>
<td class="p-auto">
<div class="flex flex-row justify-end gap-2">
<form action="/request" method="POST">
<?php wp_nonce_field('updateCharacter', 'updateCharacter_nonce'); ?>
<input type="hidden" name="action" value="updateCharacter">
<input type="hidden" name="id" value="<?= $char->ID ?>">
<button type="submit" class="btn btn-outline button-green"><?= Icon::get('o-arrow-path') ?></button>
</form>
<form action="/request" method="POST">
<?php wp_nonce_field('deleteCharacter', 'deleteCharacter_nonce'); ?>
<input type="hidden" name="action" value="deleteCharacter">
<input type="hidden" name="id" value="<?= $char->ID ?>">
<button type="submit" class="btn btn-outline button-red"><?= Icon::get('o-trash') ?></button>
</form>
</div>
</td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</main><!-- #main -->
</section><!-- #primary -->
<?php if (current_user_can('wowpress_edit_characters')) : ?>
<div x-data="{addChar:true}">
<template x-teleport="#sidebar_right">
<div class="bg-glass shadow p-auto order-1">
<h4 class="text-xl font-bold text-center mb-2">Charakter Hinzufügen</h4>
<form action="/request" method="POST">
<div class="flex flex-col gap-2">
<?php wp_nonce_field('addCharacter', 'addCharacter_nonce'); ?>
<input type="hidden" name="action" value="addCharacter">
<input type="text" name="name" placeholder="Name" class="text-black">
<input type="text" name="realm" placeholder="Server" class="text-black">
<button type="submit" class="btn btn-outline btn-hunter">Hinzufügen</a>
</div>
</form>
</div>
</template>
</div>
<?php
endif;
get_footer();