98c3cbdbc6
Arquitectura elegida: islas React/TSX montadas sobre las plantillas Django
existentes (django-vite), alimentadas por endpoints JSON bajo /api/. El backend,
las URLs y la auth por sesión se mantienen; se migra sección a sección.
Fase 0 (tooling):
- frontend/ con Vite + React 18 + TypeScript. Build a static/dist con manifest.
- django-vite 3.1 en INSTALLED_APPS + DJANGO_VITE (dev_mode=DEBUG,
static_url_prefix='dist'). STATIC_URL pasa a '/static/' (absoluto) para que los
assets no choquen con el <base href> de la plantilla. WhiteNoise sirve el bundle.
- .gitignore: frontend/node_modules y static/dist (artefactos de build).
Fase 1 (piloto: lista de noticias de la portada):
- API: home/views/api.py -> home_news_api (JsonResponse); ruta /api/home/news/
montada en home/api_urls.py fuera de i18n_patterns.
- React: NewsList.tsx hace fetch de la API y renderiza las noticias (mismas clases
CSS que el HTML original). Entry src/entries/home.tsx monta en #home-news-app.
- partials/noticias.html: el bucle {% for noticia %} se reemplaza por el contenedor
de montaje + {% vite_asset %}.
Verificado en producción: manage.py check OK, /api/home/news/ 200, la home incluye
el mount y el <script> del bundle, y el bundle se sirve (200).
Build en deploy: cd frontend && npm run build && collectstatic (ver frontend/README.md).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
74 lines
3.9 KiB
HTML
74 lines
3.9 KiB
HTML
{% load django_vite %}
|
|
<!-- main -->
|
|
<div class="main-page">
|
|
<div class="middle-content middle-content-index">
|
|
<div class="body-content">
|
|
<div class="title-content"><h1>{{ NOMBRE_SERVIDOR }} WOTLK 3.3.5A</h1></div>
|
|
<div class="box-content">
|
|
<div class="raf-index-holder">
|
|
<div class="right-content" id="right-content-min">
|
|
<div class="right-body">
|
|
<table class="max-center-table">
|
|
<tr>
|
|
<td class="yellow-info">{{ server.name }} <span class="blue-info small-font">{{ expansion }}<span></td>
|
|
<td class="real-info-box green-info">{{ online_characters }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Login</td>
|
|
<td class="real-info-box {% if status == 'Online' %}green-info{% else %}red-info{% endif %}">{{ status }}</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td>Hora</td>
|
|
<td class="real-info-box"><span id="server-time">{{ server_time }}</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2"><hr /></td>
|
|
</tr>
|
|
<tr class="centered">
|
|
<td colspan="2">
|
|
<p><span>{{ server.address }}</span></p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="raf-index-responsive"><a href="recruit-a-friend">¡RECLUTA A UN AMIGO!</a></div>
|
|
</div>
|
|
<div class="raf-index"><a href="recruit-a-friend">¡RECLUTA A UN AMIGO!</a></div>
|
|
</div>
|
|
<div class="body-box-content">
|
|
<div class="body-box-content">
|
|
<p>{{ NOMBRE_SERVIDOR }} es una comunidad enfocada en usuarios de habla hispana, especialmente dirigida al público español y latino.</p>
|
|
<p>Atraemos a usuarios apasionados tanto por el PvE como por el PvP, y ofrecemos una amplia variedad de contenido.</p>
|
|
<br />
|
|
<p>Nuestro objetivo principal es mantener una comunidad de alto nivel, brindando un ambiente agradable para que todos los miembros, nuevos y veteranos, encuentren aquí un lugar donde puedan vivir momentos inigualables.</p>
|
|
<p>¡Únete y disfruta de una experiencia única con miles de usuarios!</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<script>
|
|
if ($("#live-stream").length > 0) {
|
|
$("#content-container").html("EN VIVO" );
|
|
$("#live-stream-div").show();
|
|
}
|
|
else {
|
|
$("#live-stream-div").hide();
|
|
}
|
|
</script>
|
|
<div class="title-content-h3">
|
|
<h3 class="big-font">NOTICIAS</h3>
|
|
</div>
|
|
<div class="box-content">
|
|
<div class="body-box-content">
|
|
<!-- Isla React (Vite): la lista de noticias se renderiza en TSX y se
|
|
alimenta del endpoint /api/home/news/. Migrado desde el bucle Django. -->
|
|
<div id="home-news-app"></div>
|
|
{% vite_asset 'src/entries/home.tsx' %}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|