initial semi release
BIN
public_html/.DS_Store
vendored
Executable file
BIN
public_html/.rnd
Normal file
3
public_html/_autoreload.php
Executable file
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
$reloaded = 0;
|
||||
opcache_reset();
|
||||
6
public_html/_dotclean.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
cd /mnt/dietpi_userdata/familia
|
||||
find . -name "._*" -delete
|
||||
|
||||
cd /mnt/dietpi_userdata/www
|
||||
find . -name "._*" -delete
|
||||
3
public_html/_incl/post-body.php
Executable file
@@ -0,0 +1,3 @@
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
165
public_html/_incl/pre-body.php
Executable file
@@ -0,0 +1,165 @@
|
||||
<?php require_once "/var/www/_autoreload.php";
|
||||
|
||||
if (!isset($APP_CODE)) {
|
||||
$APP_CODE = "ax4";
|
||||
$APP_ROOT = "/";
|
||||
$APP_ICON = "logo.png";
|
||||
$APP_NAME = "Axia<sup>4</sup>";
|
||||
$APP_TITLE = "Axia4";
|
||||
} else {
|
||||
$APP_ROOT = "/$APP_CODE";
|
||||
$APP_ICON = "logo-$APP_CODE.png";
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title><?php echo $APP_TITLE ?? "Axia4"; ?></title>
|
||||
<link rel="stylesheet" href="/static/picnic.min.css" />
|
||||
<link rel="icon" type="image/png" href="/static/<?php echo $APP_ICON ?? "logo.png"; ?>" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<style>
|
||||
fieldset label {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.actbutton,
|
||||
.actbutton-half {
|
||||
padding: 5px 10px;
|
||||
padding-left: 5px;
|
||||
width: 200px;
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.actbutton-half {
|
||||
width: 167.5px;
|
||||
|
||||
}
|
||||
|
||||
.actbutton img,
|
||||
.actbutton-half img {
|
||||
float: left;
|
||||
margin: 0;
|
||||
height: 55px;
|
||||
width: 55px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0.3em 0.6em;
|
||||
border-left: 1px solid #ccc;
|
||||
border-right: 1px solid #ccc;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.no-print {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
input[readonly],
|
||||
textarea[readonly],
|
||||
.select select[readonly] {
|
||||
background-color: lightgray;
|
||||
}
|
||||
|
||||
fieldset input,
|
||||
fieldset textarea,
|
||||
fieldset .select select {
|
||||
width: calc(100% - 1s5px);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
input.nonumscroll::-webkit-outer-spin-button,
|
||||
input.nonumscroll::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input.nonumscroll[type=number] {
|
||||
appearance: textfield;
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.card.pad {
|
||||
padding: 15px 25px;
|
||||
}
|
||||
.grid-item {
|
||||
margin-bottom: 10px !important;
|
||||
padding: 15px;
|
||||
width: 250px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.grid-item img {
|
||||
margin: 0 auto;
|
||||
height: 100px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="/static/masonry.pkgd.min.js"></script>
|
||||
<script src="//code.iconify.design/1/1.0.6/iconify.min.js"></script>
|
||||
<?php if ($_GET["_hidenav"] == "yes") { ?>
|
||||
<main style="padding: 10px;">
|
||||
<?php } elseif ($_GET["_hidenav"] == "widget") { ?>
|
||||
<main style="padding: 0px;">
|
||||
<?php } else { ?>
|
||||
<style>
|
||||
body {
|
||||
height: calc(100% - 3em);
|
||||
background: #ddd;
|
||||
}
|
||||
</style>
|
||||
<nav>
|
||||
<a href="<?php echo $APP_ROOT ?? ""; ?>" class="brand">
|
||||
<img class="logo" loading="lazy" src="/static/<?php echo $APP_ICON ?? "logo.png"; ?>" />
|
||||
<span><?php echo $APP_NAME ?? "Axia<sup>4</sup>"; ?></span>
|
||||
</a>
|
||||
<a href="/lazo.php" class="brand">
|
||||
<img class="logo" title="Nuestra solidaridad con las víctimas y familiares del grave accidente de Adamuz"
|
||||
alt="Nuestra solidaridad con las víctimas y familiares del grave accidente de Adamuz" src="/static/lazo_negro.png" />
|
||||
</a>
|
||||
<input id="bmenub" type="checkbox" class="show" />
|
||||
<label for="bmenub" class="burger button">menú</label>
|
||||
<div class="menu">
|
||||
<?php if (file_exists("/var/www$APP_ROOT/__menu.php")) { ?>
|
||||
<?php require_once "/var/www$APP_ROOT/__menu.php"; ?>
|
||||
<?php } ?>
|
||||
<?php if ($APP_CODE != "ax4") { ?>
|
||||
<a href="/" class="button pseudo" style="background: #9013FE; color: white;">Ax<sup>4</sup></a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</nav>
|
||||
<main style="margin-top: 3em; padding: 20px; ">
|
||||
<?php } ?>
|
||||
<?php if (isset($_GET["_result"])) { ?>
|
||||
<div class="card"
|
||||
style="padding: 10px; background-color: <?php echo $_GET["_resultcolor"] ?? 'lightgreen'; ?>; text-align: center;">
|
||||
<h3><?php echo $_GET["_result"]; ?></h3>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<!-- <div class="card" style="padding: 15px; background: #ffcc00; color: #000;">
|
||||
<h2>Alerta Meteorologica</h2>
|
||||
<span>Viento fuerte en Portugalete.</span>
|
||||
</div> -->
|
||||
49
public_html/_login.php
Executable file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
if (isset($_POST["user"])) {
|
||||
$valid = "";
|
||||
$user = trim(strtolower($_POST["user"]));
|
||||
$password = $_POST["password"];
|
||||
$users = json_decode(file_get_contents("/mnt/dietpi_userdata/www_userdata/Usuarios.json"), true);
|
||||
if (!isset($users)) {
|
||||
$valid = "Fallo del sistema: No hay cuentas.";
|
||||
}
|
||||
|
||||
$userdata = $users[$user];
|
||||
if (!isset($userdata["password_hash"])) {
|
||||
$valid = "El usuario no existe.";
|
||||
}
|
||||
|
||||
$hash = $userdata["password_hash"];
|
||||
if (password_verify($password, $hash)) {
|
||||
$_SESSION['auth_user'] = $user;
|
||||
$_SESSION['auth_data'] = $userdata;
|
||||
$_SESSION['auth_ok'] = "yes";
|
||||
header("Location: /");
|
||||
die();
|
||||
} else {
|
||||
$valid = "La contraseña no es correcta.";
|
||||
}
|
||||
|
||||
}
|
||||
require_once "_incl/pre-body.php"; ?>
|
||||
<div class="card pad">
|
||||
|
||||
<h1>Iniciar sesión</h1>
|
||||
|
||||
<form method="post">
|
||||
<fieldset class="card" style="border: 2px solid black; border-radius: 6.5px; padding: 10px 25px; max-width: 500px;">
|
||||
<label>
|
||||
<b>Usuario:</b><br>
|
||||
<input required type="text" name="user" placeholder="Ej: PepitoFlores3">
|
||||
</label><br><br>
|
||||
<label>
|
||||
<b>Contraseña:</b><br>
|
||||
<input required type="password" name="password" placeholder="Ej: PerroArbolPianoPizza">
|
||||
</label>
|
||||
<button type="submit">Iniciar sesión</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<?php require_once "_incl/post-body.php"; ?>
|
||||
102
public_html/aularios-politica-privacidad.html
Executable file
@@ -0,0 +1,102 @@
|
||||
<h1>Política de Privacidad — Aularios de Aldamiz</h1>
|
||||
<p><strong>Última actualización:</strong> 27/11/2025</p>
|
||||
<p><strong>Versión:</strong> 1.1</p>
|
||||
<p>Esta Política de Privacidad explica cómo <strong>EuskadiTech </strong>(en adelante, "la empresa", "nosotros") trata los datos personales de las personas que utilizan el servicio Wiki basado en WikiJS (en adelante, "el Servicio", “<strong>Aularios de Aldamiz”</strong>). El acceso al Servicio se realiza mediante inicio de sesión con <strong>Cuenta de Google (OAuth)</strong> o mediante <strong>cuenta local</strong> creada en el propio sistema.</p>
|
||||
<h2>1. Responsable del tratamiento</h2>
|
||||
<p><strong>Nombre:</strong> Aularios de Aldamiz</p>
|
||||
<p><strong>Correo de contacto / administración:</strong> <a href="mailto:aularios@tech.eus">aularios@tech.eus</a> (este buzón se reenvía automáticamente al Delegado de Protección de Datos de EuskadiTech).</p>
|
||||
<p><strong>Hosting:</strong> servidor local EuskadiTech - tech.eus.</p>
|
||||
<h2>2. Finalidades y datos tratados</h2>
|
||||
<h3>2.1. Inicio de sesión con Google (OAuth)</h3>
|
||||
<p>Cuando el usuario inicia sesión con Google, se recogen únicamente los datos que el usuario autoriza a compartir durante el proceso de OAuth, que normalmente incluyen:</p>
|
||||
<ul>
|
||||
<li>Nombre y apellidos.</li>
|
||||
<li>Dirección de correo electrónico.</li>
|
||||
<li>Foto de perfil (si existe).</li>
|
||||
<li>Identificador único de Google (Google ID).</li>
|
||||
</ul>
|
||||
<p><strong>Finalidad:</strong> autenticación, creación/actualización de la cuenta en el Servicio, asignación de roles y personalización mínima del perfil.</p>
|
||||
<h3>2.2. Cuentas locales</h3>
|
||||
<p>Para cuentas locales se tratan los siguientes datos:</p>
|
||||
<ul>
|
||||
<li>Nombre de usuario.</li>
|
||||
<li>Correo electrónico.</li>
|
||||
<li>Contraseña (almacenada de forma segura y siempre cifrada/hasheada).</li>
|
||||
<li>Rol (ej. alumno, docente, administrador).</li>
|
||||
</ul>
|
||||
<p><strong>Finalidad:</strong> autenticación, gestión de acceso y permisos, comunicación administrativa y notificaciones internas.</p>
|
||||
<h3>2.3. Cuenta compartida de solo lectura</h3>
|
||||
<p>EuskadiTech dispone de una cuenta compartida entre alumnos con permisos de solo lectura. Dicha cuenta no recoge ni asocia datos personales de quienes la utilicen.</p>
|
||||
<h3>2.4. Registros técnicos y logs</h3>
|
||||
<p>Se registran de forma automática datos técnicos necesarios para la seguridad y funcionamiento del Servicio:</p>
|
||||
<ul>
|
||||
<li>Dirección IP.</li>
|
||||
<li>Fecha y hora de acceso.</li>
|
||||
<li>Páginas consultadas y acciones relevantes (crear/editar/eliminar).</li>
|
||||
<li>Información del navegador y sistema operativo.</li>
|
||||
</ul>
|
||||
<p><strong>Finalidad:</strong> seguridad, auditoría, detección y resolución de incidencias, mejora y mantenimiento del Servicio.</p>
|
||||
<h3>2.5. Cookies</h3>
|
||||
<p>Se utilizan cookies estrictamente necesarias para la sesión, autenticación y protección CSRF. No se emplean cookies publicitarias ni analíticas por defecto; si en el futuro se activan cookies analíticas se solicitará el consentimiento cuando la normativa lo exija.</p>
|
||||
<h2>3. Base jurídica del tratamiento (RGPD y LOPDGDD)</h2>
|
||||
<p>Las bases legales que legitiman los tratamientos son, según proceda:</p>
|
||||
<ul>
|
||||
<li>El cumplimiento de una misión de interés público o el ejercicio de poderes públicos en materia educativa.</li>
|
||||
<li>El interés legítimo de EuskadiTech para garantizar la seguridad, integridad y disponibilidad del Servicio.</li>
|
||||
<li>El cumplimiento de obligaciones contractuales o precontractuales con el interesado.</li>
|
||||
<li>El consentimiento del interesado, cuando el tratamiento concreto así lo requiera (por ejemplo, en casos no estrictamente necesarios para la prestación del Servicio).</li>
|
||||
</ul>
|
||||
<h2>4. Destinatarios y encargados</h2>
|
||||
<ul>
|
||||
<li><strong>Google:</strong> cuando se utiliza Google OAuth, Google actúa como proveedor/tercera parte y trata los datos conforme a su política de privacidad. El usuario puede revisar la política y condiciones de Google para conocer cómo procesa sus datos y qué transferencias pueden producirse.</li>
|
||||
<li><strong>Personal autorizado de EuskadiTech:</strong> acceso necesario para la administración y mantenimiento del Servicio.</li>
|
||||
<li>No se cederán datos a terceros salvo obligación legal o en los supuestos previstos en esta política y con las garantías legalmente exigibles.</li>
|
||||
</ul>
|
||||
<h2>5. Transferencias internacionales</h2>
|
||||
<p>El Servicio está alojado en servidor local, por lo que no se realizan transferencias internacionales del tratamiento de datos desde el hosting. En el caso de uso de Google OAuth, el proveedor puede aplicar tratamientos o transferencias fuera del Espacio Económico Europeo conforme a su política; EuskadiTech recomienda consultar la documentación y garantías que Google proporciona.</p>
|
||||
<h2>6. Plazos de conservación</h2>
|
||||
<ul>
|
||||
<li><strong>Cuentas de usuario:</strong> se conservan mientras la cuenta esté activa y en uso. Las cuentas se eliminan a petición del interesado mediante correo a <a href="mailto:aularios@tech.eus">aularios@tech.eus</a>, o automáticamente tras <strong>3 años</strong> de inactividad o finalización del uso educativo.</li>
|
||||
<li><strong>Cuentas compartidas de solo lectura:</strong> mantenidas mientras formen parte del funcionamiento del Servicio y sin asociación a datos personales de los usuarios.</li>
|
||||
<li><strong>Logs y registros de acceso:</strong> conservados durante un máximo de <strong>6 meses</strong> para fines de seguridad y auditoría.</li>
|
||||
<li><strong>Backups:</strong> conservados según la política interna de EuskadiTech, garantizando las mismas medidas de seguridad y plazos coherentes con lo indicado anteriormente.</li>
|
||||
</ul>
|
||||
<h2>7. Medidas de seguridad</h2>
|
||||
<p>EuskadiTech aplica medidas técnicas y organizativas para proteger los datos personales, incluyendo, entre otras:</p>
|
||||
<ul>
|
||||
<li>Almacenamiento seguro de contraseñas mediante hashing criptográfico robusto (por ejemplo, bcrypt/argon2 u otro equivalente).</li>
|
||||
<li>Comunicación cifrada mediante HTTPS/TLS para accesos al Servicio.</li>
|
||||
<li>Control de accesos y segregación por roles (principio de mínimos privilegios).</li>
|
||||
<li>Registro y monitorización de accesos y acciones relevantes.</li>
|
||||
<li>Copia de seguridad en entorno controlado y planes de recuperación ante desastres.</li>
|
||||
<li>Seguridad física y lógica del servidor local (acceso restringido al personal autorizado).</li>
|
||||
</ul>
|
||||
<p>Pese a las medidas adoptadas, ningún sistema es infalible; en caso de violación de la seguridad que suponga riesgo para los derechos y libertades de las personas afectadas, se notificará la brecha a la autoridad de control y, si procede, a los interesados, conforme al RGPD y la normativa aplicable.</p>
|
||||
<h2>8. Derechos de las personas</h2>
|
||||
<p>De conformidad con el RGPD y la LOPDGDD, las personas disponen de los siguientes derechos:</p>
|
||||
<ul>
|
||||
<li>Derecho de acceso a sus datos personales.</li>
|
||||
<li>Derecho de rectificación de datos inexactos o incompletos.</li>
|
||||
<li>Derecho de supresión ("derecho al olvido") cuando proceda.</li>
|
||||
<li>Derecho a la limitación del tratamiento.</li>
|
||||
<li>Derecho a la portabilidad de los datos cuando proceda.</li>
|
||||
<li>Derecho de oposición al tratamiento por motivos legítimos.</li>
|
||||
<li>Derecho a retirar el consentimiento en cualquier momento, sin que ello afecte a la licitud del tratamiento basado en el consentimiento previo a su retirada.</li>
|
||||
</ul>
|
||||
<p>Para ejercer sus derechos, el interesado puede enviar una solicitud por correo electrónico a <a href="mailto:aularios@tech.eus">aularios@tech.eus</a> (este buzón se reenvía automáticamente al Delegado de Protección de Datos). La solicitud deberá identificar al solicitante y especificar el derecho que desea ejercer; en su caso, podrá solicitarse documentación que acredite la identidad. Responderemos en los plazos legalmente establecidos.</p>
|
||||
<p>Si el interesado no queda satisfecho con la respuesta, tiene derecho a presentar una reclamación ante la Agencia Española de Protección de Datos (AEPD).</p>
|
||||
<h2>9. Menores</h2>
|
||||
<p>El Servicio se utiliza en un contexto escolar. Conforme a la normativa española (LOPDGDD) la edad mínima para prestar consentimiento digital es de <strong>14 años</strong>. Para menores por debajo de dicho umbral, se requerirá el consentimiento de los padres o tutores legales cuando la normativa así lo exija. EuskadiTech adoptará medidas adicionales de protección para los menores, incluida la supervisión educativa y la limitación de la publicación de datos personales.</p>
|
||||
<h2>10. Procedimiento de eliminación de cuentas</h2>
|
||||
<p>Las cuentas podrán solicitar su eliminación enviando un correo a <a href="mailto:aularios@tech.eus">aularios@tech.eus</a>. A la recepción de la solicitud y previa verificación de identidad, EuskadiTech procederá a la supresión de los datos personales del usuario en los plazos razonables y conforme a las obligaciones legales de conservación que pudieran aplicarse.</p>
|
||||
<h2>11. Cambios en la política</h2>
|
||||
<p>Esta Política de Privacidad puede ser actualizada. Publicaremos la versión vigente en el Servicio con la fecha de última actualización. Cuando los cambios sean significativos se informará a la comunidad educativa por los canales habituales.</p>
|
||||
<h2>12. Contacto</h2>
|
||||
<p>Para consultas relativas a esta política, ejercicio de derechos o incidencias:</p>
|
||||
<p><strong>Correo:</strong> <a href="mailto:aularios@tech.eus">aularios@tech.eus</a> (reenvío automático al Delegado de Protección de Datos).</p>
|
||||
<h2>13. Autoridad de control</h2>
|
||||
<p>Si considera que sus derechos no han sido atendidos adecuadamente, puede presentar una reclamación ante la Agencia Española de Protección de Datos (AEPD): <a href="https://www.aepd.es">https://www.aepd.es</a>.</p>
|
||||
<h2>14. Brechas de seguridad</h2>
|
||||
<p>En caso de haber una brecha de seguridad, se avisara por correo en un plazo máximo de 90 días (plazo para reforzar la seguridad) con los tipos de datos afectados.</p>
|
||||
<hr>
|
||||
<p>Documento generado para su publicación en el Servicio WikiJS de <strong>Aularios de Aldamiz</strong>.</p>
|
||||
BIN
public_html/entreaulas/.DS_Store
vendored
Executable file
2
public_html/entreaulas/__menu.php
Executable file
@@ -0,0 +1,2 @@
|
||||
<a href="/entreaulas/_login.php?reload_users=1" class="button pseudo">Recargar Cuenta</a>
|
||||
<a href="/entreaulas/_login.php?logout=1" class="button pseudo">Cerrar sesión</a>
|
||||
23
public_html/entreaulas/_incl/auth_redir.php
Executable file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
// UserAgent
|
||||
$ua = $_SERVER['HTTP_USER_AGENT'];
|
||||
if (str_starts_with($ua, "EntreAulasAuth/")) {
|
||||
// Bypass authentication for this specific user agent (used by Ortuella tablets)
|
||||
session_start([ 'cookie_lifetime' => 604800 ]);
|
||||
$username = explode("/", $ua)[1];
|
||||
$userpass = explode("/", $ua)[2];
|
||||
$_SESSION["entreaulas_auth_user"] = $username;
|
||||
$_SESSION["entreaulas_auth_data"] = json_decode(file_get_contents("/srv/storage/entreaulas/Usuarios/$username.json"), true);
|
||||
$_SESSION["entreaulas_auth_ok"] = true;
|
||||
session_regenerate_id();
|
||||
ini_set("session.use_only_cookies", "true");
|
||||
ini_set("session.use_trans_sid", "false");
|
||||
}
|
||||
session_start([ 'cookie_lifetime' => 604800 ]);
|
||||
session_regenerate_id();
|
||||
ini_set("session.use_only_cookies", "true");
|
||||
ini_set("session.use_trans_sid", "false");
|
||||
if (!$_SESSION["entreaulas_auth_ok"]) {
|
||||
header("Location: /entreaulas/_login.php");
|
||||
die();
|
||||
}
|
||||
3
public_html/entreaulas/_incl/post-body.php
Executable file
@@ -0,0 +1,3 @@
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
5
public_html/entreaulas/_incl/pre-body.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
$APP_CODE = "entreaulas";
|
||||
$APP_NAME = "EntreAulas";
|
||||
$APP_TITLE = "EntreAulas";
|
||||
require_once "/var/www/_incl/pre-body.php";
|
||||
55
public_html/entreaulas/_login.php
Executable file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
session_start();
|
||||
if ($_GET["reload_users"] == "1") {
|
||||
$user = $_SESSION['entreaulas_auth_user'];
|
||||
$userdata = json_decode(file_get_contents("/srv/storage/entreaulas/Usuarios/$user.json"), true);
|
||||
$_SESSION['entreaulas_auth_data'] = $userdata;
|
||||
header("Location: /entreaulas/");
|
||||
die();
|
||||
}
|
||||
if ($_GET["logout"] == "1") {
|
||||
session_destroy();
|
||||
header("Location: /entreaulas/_login.php");
|
||||
die();
|
||||
}
|
||||
if (isset($_POST["user"])) {
|
||||
$valid = "";
|
||||
$user = trim(strtolower($_POST["user"]));
|
||||
$password = $_POST["password"];
|
||||
$userdata = json_decode(file_get_contents("/srv/storage/entreaulas/Usuarios/$user.json"), true);
|
||||
if (!isset($userdata["password_hash"])) {
|
||||
$valid = "El usuario no existe.";
|
||||
}
|
||||
|
||||
$hash = $userdata["password_hash"];
|
||||
if (password_verify($password, $hash)) {
|
||||
$_SESSION['entreaulas_auth_user'] = $user;
|
||||
$_SESSION['entreaulas_auth_data'] = $userdata;
|
||||
$_SESSION['entreaulas_auth_ok'] = true;
|
||||
header("Location: /entreaulas/");
|
||||
die();
|
||||
} else {
|
||||
$valid = "La contraseña no es correcta.";
|
||||
}
|
||||
|
||||
}
|
||||
require_once "_incl/pre-body.php"; ?>
|
||||
<div class="card pad">
|
||||
|
||||
<h1>Iniciar sesión</h1>
|
||||
|
||||
<form method="post">
|
||||
<fieldset class="card" style="border: 2px solid black; border-radius: 6.5px; padding: 10px 25px; max-width: 500px;">
|
||||
<label>
|
||||
<b>Usuario:</b><br>
|
||||
<input required type="text" name="user" placeholder="Ej: PepitoFlores3">
|
||||
</label><br><br>
|
||||
<label>
|
||||
<b>Contraseña:</b><br>
|
||||
<input required type="password" name="password" placeholder="Ej: PerroArbolPianoPizza">
|
||||
</label>
|
||||
<button type="submit">Iniciar sesión</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<?php require_once "_incl/post-body.php"; ?>
|
||||
62
public_html/entreaulas/admin/aularios.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
require_once "../_incl/auth_redir.php";
|
||||
require_once "../_incl/pre-body.php";
|
||||
switch ($_GET["form"]) {
|
||||
case "create":
|
||||
$user_data = $_SESSION["entreaulas_auth_data"];
|
||||
$centro_id = $user_data["centro"];
|
||||
$aulario_id = uniqid("aulario_");
|
||||
$aulario_data = [
|
||||
"name" => $_POST["name"],
|
||||
"icon" => $_POST["icon"] ?? "/static/logo-entreaulas.png"
|
||||
];
|
||||
// Make path recursive (mkdir -p equivalent)
|
||||
@mkdir("/srv/storage/entreaulas/Centros/$centro_id/Aularios/", 0777, true);
|
||||
file_put_contents("/srv/storage/entreaulas/Centros/$centro_id/Aularios/$aulario_id.json", json_encode($aulario_data));
|
||||
// Update user data
|
||||
$_SESSION["entreaulas_auth_data"]["aulas"][] = $aulario_id;
|
||||
header("Location: ?action=index");
|
||||
exit();
|
||||
break;
|
||||
}
|
||||
|
||||
switch ($_GET["action"]) {
|
||||
case "new":
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Nuevo Aulario</h1>
|
||||
<span>
|
||||
Aquí puedes crear un nuevo aulario para el centro que administras.
|
||||
</span>
|
||||
<form method="post" action="?form=create">
|
||||
<label>
|
||||
Nombre del Aulario:<br>
|
||||
<input required type="text" name="name" placeholder="Ej: Aulario Principal">
|
||||
</label><br><br>
|
||||
<label>
|
||||
Icono del Aulario (URL):<br>
|
||||
<input type="url" name="icon" placeholder="Ej: https://example.com/icon.png" value="/static/logo-entreaulas.png">
|
||||
</label><br><br>
|
||||
<button type="submit">Crear Aulario</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
break;
|
||||
case "index":
|
||||
default:
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Gestión de Aularios</h1>
|
||||
<span>
|
||||
Desde esta sección puedes administrar los aularios asociados al centro que estás administrando.
|
||||
</span>
|
||||
<a href="?action=new" class="button">Nuevo Aulario</a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
require_once "../_incl/post-body.php"; ?>
|
||||
44
public_html/entreaulas/aulario.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
require_once "_incl/auth_redir.php";
|
||||
require_once "_incl/pre-body.php";
|
||||
$aulario_id = $_GET["id"];
|
||||
$centro_id = $_SESSION["entreaulas_auth_data"]["centro"];
|
||||
$aulario = json_decode(file_get_contents("/srv/storage/entreaulas/Centros/$centro_id/Aularios/$aulario_id.json"), true);
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Aulario: <?= htmlspecialchars($aulario["name"]) ?></h1>
|
||||
<span>
|
||||
Bienvenidx al aulario <?= htmlspecialchars($aulario["name"]) ?>. Aquí podrás gestionar las funcionalidades específicas de este aulario.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="grid">
|
||||
<a href="/entreaulas/paneldiario.php?aulario=<?= urlencode($aulario_id) ?>" class="button grid-item">
|
||||
<img src="/static/iconexperience/calendar_preferences.png" height="125">
|
||||
</br>
|
||||
Panel Diario
|
||||
</a>
|
||||
<a href="/entreaulas/admin/aularios.php?action=edit&aulario=<?= urlencode($aulario_id) ?>" class="button grid-item">
|
||||
<img src="/static/iconexperience/gear_edit.png" height="125">
|
||||
<br>
|
||||
Administración del Aulario
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var msnry = new Masonry('#grid', {
|
||||
"columnWidth": 250,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {msnry.layout()}, 150)
|
||||
// setInterval(() => {msnry.layout()}, 10000);
|
||||
window.addEventListener('resize', function(event) {
|
||||
msnry.layout()
|
||||
}, true);
|
||||
|
||||
</script>
|
||||
|
||||
<?php require_once "_incl/post-body.php"; ?>
|
||||
51
public_html/entreaulas/index.php
Executable file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
require_once "_incl/auth_redir.php";
|
||||
require_once "_incl/pre-body.php";?>
|
||||
<div class="card pad">
|
||||
<h1>¡Hola, <?php echo $_SESSION["entreaulas_auth_data"]["display_name"];?>!</h1>
|
||||
<span>
|
||||
Bienvenidx a la plataforma de gestión de aularios conectados. Desde aquí podrás administrar los aularios asociados a tu cuenta.
|
||||
</span>
|
||||
</div>
|
||||
<div id="grid">
|
||||
<?php $user_data = $_SESSION["entreaulas_auth_data"];
|
||||
$centro_id = $user_data["centro"];
|
||||
foreach ($user_data["aulas"] as $aulario_id) {
|
||||
$aulario = json_decode(file_get_contents("/srv/storage/entreaulas/Centros/$centro_id/Aularios/$aulario_id.json"), true);
|
||||
echo '<a href="/entreaulas/aulario.php?id=' . $aulario_id . '" class="button grid-item">
|
||||
<img style="height: 125px;" src="' . $aulario["icon"] . '" alt="' . htmlspecialchars($aulario["name"]) . ' Icono">
|
||||
<br>
|
||||
' . htmlspecialchars($aulario["name"]) . '
|
||||
</a>';
|
||||
} ?>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.grid-item {
|
||||
margin-bottom: 10px !important;
|
||||
padding: 15px;
|
||||
width: 250px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.grid-item img {
|
||||
margin: 0 auto;
|
||||
height: 100px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script>
|
||||
var msnry = new Masonry('#grid', {
|
||||
"columnWidth": 250,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setInterval(() => {
|
||||
msnry.layout()
|
||||
}, 1000);
|
||||
msnry.layout()
|
||||
</script>
|
||||
|
||||
<?php require_once "_incl/post-body.php"; ?>
|
||||
462
public_html/entreaulas/paneldiario.php
Executable file
@@ -0,0 +1,462 @@
|
||||
<?php
|
||||
require_once "_incl/auth_redir.php";
|
||||
require_once "_incl/pre-body.php";
|
||||
switch ($_GET["form"]) {
|
||||
case "menu_select":
|
||||
// Guardar menú seleccionado en la base de datos (a implementar)
|
||||
$selected_date = $_POST["fecha"];
|
||||
$plato1 = $_POST["plato1"];
|
||||
$plato2 = $_POST["plato2"];
|
||||
$postre = $_POST["postre"];
|
||||
// Aquí se debería guardar en la base de datos del aulario la selección del menú para la fecha indicada.
|
||||
// Por ahora, solo mostramos un mensaje de confirmación.
|
||||
// Y redirigimos despues de 10 segundos al panel diario.
|
||||
header("Refresh: 10; URL=/entreaulas/paneldiario.php?aulario=" . urlencode($_GET['aulario'] ?? ''));
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Menú Seleccionado</h1>
|
||||
<span>
|
||||
Has seleccionado el siguiente menú para el día <?php echo htmlspecialchars($selected_date); ?>:
|
||||
</span>
|
||||
<ul>
|
||||
<li>Primer Plato: <?php echo htmlspecialchars($plato1); ?></li>
|
||||
<li>Segundo Plato: <?php echo htmlspecialchars($plato2); ?></li>
|
||||
<li>Postre: <?php echo htmlspecialchars($postre); ?></li>
|
||||
</ul>
|
||||
<a href="/entreaulas/paneldiario.php?aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>" class="button">Volver
|
||||
al Panel Diario</a>
|
||||
</div>
|
||||
<?php
|
||||
die();
|
||||
break;
|
||||
}
|
||||
?>
|
||||
<audio id="win-sound" src="/static/sounds/win.mp3" preload="auto"></audio>
|
||||
<audio id="lose-sound" src="/static/sounds/lose.mp3" preload="auto"></audio>
|
||||
<audio id="click-sound" src="/static/sounds/click.mp3" preload="auto"></audio>
|
||||
<?php
|
||||
switch ($_GET["action"]) {
|
||||
default:
|
||||
case "index":
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Panel diario</h1>
|
||||
<span>
|
||||
Desde este panel puedes apuntar las actividades diarias del aulario.
|
||||
</span>
|
||||
</div>
|
||||
<div id="grid">
|
||||
<!-- Calendario -->
|
||||
<a onclick="document.getElementById('click-sound').play()" href="?action=calendar&aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>" class="button grid-item">
|
||||
<img src="/static/arasaac/calendario.png" height="125">
|
||||
<br>
|
||||
Calendario
|
||||
</a>
|
||||
<!-- Actividades -->
|
||||
<a onclick="document.getElementById('click-sound').play()" href="?action=activities&aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>" class="button grid-item">
|
||||
<span class="iconify" style="font-size: 125px" data-icon="mdi-school"></span>
|
||||
<br>
|
||||
Actividades
|
||||
</a>
|
||||
<!-- Menú del comedor -->
|
||||
<a onclick="document.getElementById('click-sound').play()" href="?action=menu&aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>" class="button grid-item">
|
||||
<span class="iconify" style="font-size: 125px" data-icon="mdi-silverware-fork-knife"></span>
|
||||
<br>
|
||||
Menú del Comedor
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.grid-item {
|
||||
margin-bottom: 10px !important;
|
||||
padding: 15px;
|
||||
width: 250px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.grid-item img {
|
||||
margin: 0 auto;
|
||||
height: 125px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script>
|
||||
var msnry = new Masonry('#grid', {
|
||||
"columnWidth": 250,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {
|
||||
msnry.layout()
|
||||
}, 250); window.onresize = () => {msnry.layout()}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
break;
|
||||
case "menu":
|
||||
// Menú del comedor
|
||||
|
||||
$months = [
|
||||
1 => "Enero",
|
||||
2 => "Febrero",
|
||||
3 => "Marzo",
|
||||
4 => "Abril",
|
||||
5 => "Mayo",
|
||||
6 => "Junio",
|
||||
7 => "Julio",
|
||||
8 => "Agosto",
|
||||
9 => "Septiembre",
|
||||
10 => "Octubre",
|
||||
11 => "Noviembre",
|
||||
12 => "Diciembre"
|
||||
];
|
||||
|
||||
$dow = [
|
||||
1 => "Lunes",
|
||||
2 => "Martes",
|
||||
3 => "Miércoles",
|
||||
4 => "Jueves",
|
||||
5 => "Viernes",
|
||||
6 => "Sábado",
|
||||
7 => "Domingo"
|
||||
];
|
||||
|
||||
$month = $_GET['month'] ?? date('n');
|
||||
$year = $_GET['year'] ?? date('Y');
|
||||
$MENUTY = $_GET['menu'] ?? "basal";
|
||||
|
||||
$parsedTable = null;
|
||||
function getMenuForDay(string $pageText, string $day)
|
||||
{
|
||||
global $parsedTable;
|
||||
|
||||
// ---------------------------------------------
|
||||
// 1. Parse table only once
|
||||
// ---------------------------------------------
|
||||
if ($parsedTable === null) {
|
||||
|
||||
$lines = preg_split("/\R/", $pageText);
|
||||
$rows = [];
|
||||
|
||||
foreach ($lines as $line) {
|
||||
$trim = trim($line);
|
||||
|
||||
// Only lines that start with "|" and are table rows
|
||||
if (strpos($trim, "|") === 0 && substr($trim, -1) === "|") {
|
||||
|
||||
// Remove leading and trailing |, then split
|
||||
$cols = explode("|", trim($trim, "|"));
|
||||
$cols = array_map("trim", $cols);
|
||||
|
||||
if (count($cols) >= 4) {
|
||||
$rows[] = [
|
||||
"fecha" => $cols[0],
|
||||
"plato1" => $cols[1],
|
||||
"plato2" => $cols[2],
|
||||
"postre" => $cols[3]
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$parsedTable = $rows; // store result (parsed only once)
|
||||
}
|
||||
|
||||
// ---------------------------------------------
|
||||
// 2. Look for the requested date
|
||||
// ---------------------------------------------
|
||||
foreach ($parsedTable as $row) {
|
||||
if ($row["fecha"] === $day) {
|
||||
return $row;
|
||||
}
|
||||
}
|
||||
|
||||
return null; // not found
|
||||
}
|
||||
|
||||
$MENUDATA = file_get_contents("https://aularios.tech.eus/aldamiz_ortuella/menu_comedor/tabla/$MENUTY?do=export_raw");
|
||||
// Solo semana actual, botones. cuando se pulse el botón del dia actual, se enviara un POST ?form=menu con los valores del menu
|
||||
$weeknow = date('W');
|
||||
?>
|
||||
<script>
|
||||
function seleccionarMenuDia(element, dia) {
|
||||
// Si es dia correcto
|
||||
var today = new Date();
|
||||
var currentDay = today.getDate();
|
||||
if (dia == currentDay) {
|
||||
element.style.backgroundColor = "#9cff9f"; // Verde
|
||||
document.getElementById('win-sound').play();
|
||||
setTimeout(() => {
|
||||
location.href = "?aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>";
|
||||
}, 2000);
|
||||
} else {
|
||||
element.style.backgroundColor = "#ff9088"; // Rojo
|
||||
document.getElementById('lose-sound').play();
|
||||
setTimeout(() => {
|
||||
element.style.backgroundColor = ""; // Volver al color anterior
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<div class="card pad">
|
||||
<h1>Menú del Comedor</h1>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<?php for ($d = 1; $d <= 31; $d++) {
|
||||
$dateStr = sprintf("%04d-%02d-%02d", $year, $month, $d);
|
||||
$dayOfWeek = date('N', strtotime($dateStr));
|
||||
$weekofmonth = date('W', strtotime($dateStr));
|
||||
if ($dayOfWeek > 5) {
|
||||
continue; // Skip weekends
|
||||
}
|
||||
if ($weekofmonth != $weeknow) {
|
||||
continue; // Only current week
|
||||
}
|
||||
$menuForDay = getMenuForDay($MENUDATA, $dateStr);
|
||||
if ($menuForDay === null) {
|
||||
continue; // No menu for this day
|
||||
}
|
||||
?>
|
||||
<a class="card grid-item" style="width: 250px; height: 250px; color: black;" onclick="seleccionarMenuDia(this, <?php echo $d; ?>);">
|
||||
<h3><?php echo $dow[$dayOfWeek] . " " . $d ?></h3>
|
||||
<ol style="text-align: left; padding-left: 15px;">
|
||||
<li><?php echo htmlspecialchars($menuForDay["plato1"]); ?></li>
|
||||
<li><?php echo htmlspecialchars($menuForDay["plato2"]); ?></li>
|
||||
<li><?php echo htmlspecialchars($menuForDay["postre"]); ?></li>
|
||||
</ol>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var msnry = new Masonry('.grid', {
|
||||
"columnWidth": 250,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {
|
||||
msnry.layout()
|
||||
}, 250); window.onresize = () => {msnry.layout()}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
break;
|
||||
case "activities":
|
||||
// Actividades
|
||||
break;
|
||||
case "calendar":
|
||||
// Calendario, elegir el dia, mes, y dia-de-la-semana.
|
||||
$mes_correcto = date('m');
|
||||
$dia_correcto = date('d');
|
||||
$ds_correcto = date('N'); // 1 (Lunes) a 7 (Domingo)
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Calendario</h1>
|
||||
<span>
|
||||
Aquí podrás ver y gestionar el calendario de actividades del aulario.
|
||||
</span>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<script>
|
||||
function seleccionarDia(element, dia, mes, year, ds) {
|
||||
// Si es dia correcto
|
||||
if (dia == <?php echo $dia_correcto; ?> && mes == <?php echo $mes_correcto; ?> && ds == <?php echo $ds_correcto; ?>) {
|
||||
element.style.backgroundColor = "#9cff9f"; // Verde
|
||||
document.getElementById('win-sound').play();
|
||||
setTimeout(() => {
|
||||
window.location.href = "?action=calendario_diasemana&aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>";
|
||||
}, 2000);
|
||||
} else {
|
||||
element.style.backgroundColor = "#ff9088"; // Rojo
|
||||
document.getElementById('lose-sound').play();
|
||||
setTimeout(() => {
|
||||
element.style.backgroundColor = ""; // Volver al color anterior
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<?php foreach (range(1, 31) as $dia) {
|
||||
$ds = date('N', strtotime(date('Y-m-') . sprintf("%02d", $dia)));
|
||||
if ($ds > 5) {
|
||||
?>
|
||||
<div class="card grid-item" style="width: 130px; background-color: #000; color: #fff; height: 100px;">
|
||||
<span style="font-size: 48px;"><?php echo $dia; ?></span>
|
||||
</div>
|
||||
<?php
|
||||
continue;
|
||||
}
|
||||
$is_today = ($dia == $dia_correcto);
|
||||
?>
|
||||
<a class="card grid-item" style="width: 130px; height: 100px; color: black;"
|
||||
onclick="seleccionarDia(this, <?php echo $dia; ?>, <?php echo $mes_correcto; ?>, <?php echo date('Y'); ?>, <?php echo $ds; ?>);">
|
||||
<span style="font-size: 48px;"><?php echo $dia; ?></span>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<script>
|
||||
var msnry = new Masonry('.grid', {
|
||||
"columnWidth": 130,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {
|
||||
msnry.layout()
|
||||
}, 250); window.onresize = () => {msnry.layout()}
|
||||
</script>
|
||||
<?php
|
||||
break;
|
||||
case "calendario_diasemana":
|
||||
// Calendario - Día de la semana
|
||||
$dia_de_la_semana = date('N'); // 1 (Lunes) a 7 (Domingo)
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Calendario - Día de la Semana</h1>
|
||||
<span>
|
||||
Has seleccionado el día correcto. ¡Ahora pon el dia de la semana!
|
||||
</span>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<script>
|
||||
function seleccionarDiaSemana(element, ds) {
|
||||
// Si es dia de la semana correcto
|
||||
if (ds == <?php echo $dia_de_la_semana; ?>) {
|
||||
element.style.backgroundColor = "#9cff9f"; // Verde
|
||||
document.getElementById('win-sound').play();
|
||||
setTimeout(() => {
|
||||
location.href = "/entreaulas/paneldiario.php?action=calendario_mes&aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>";
|
||||
}, 2000);
|
||||
} else {
|
||||
element.style.backgroundColor = "#ff9088"; // Rojo
|
||||
document.getElementById('lose-sound').play();
|
||||
setTimeout(() => {
|
||||
element.style.backgroundColor = ""; // Volver al color anterior
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
$days_of_week = [
|
||||
1 => "Lunes",
|
||||
2 => "Martes",
|
||||
3 => "Miércoles",
|
||||
4 => "Jueves",
|
||||
5 => "Viernes"
|
||||
];
|
||||
$dow_euskara = [
|
||||
1 => "Astelehena",
|
||||
2 => "Asteartea",
|
||||
3 => "Asteazkena",
|
||||
4 => "Osteguna",
|
||||
5 => "Ostirala"
|
||||
];
|
||||
foreach ($days_of_week as $ds => $day_name) {
|
||||
?>
|
||||
<a class="card grid-item" style="width: 225px; height: 225px; color: black;"
|
||||
onclick="seleccionarDiaSemana(this, <?php echo $ds; ?>);">
|
||||
<span style="font-size: 30px;"><?php echo $day_name; ?></span>
|
||||
<img src="/static/arasaac/diadelasemana/<?php echo strtolower($day_name); ?>.png" alt=""
|
||||
style="width: 100px; height: 100px;">
|
||||
<span style="font-size: 30px; color: blue;"><?php echo $dow_euskara[$ds]; ?></span>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<script>
|
||||
var msnry = new Masonry('.grid', {
|
||||
"columnWidth": 225,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {
|
||||
msnry.layout()
|
||||
}, 250); window.onresize = () => {msnry.layout()}
|
||||
</script>
|
||||
<?php
|
||||
break;
|
||||
case "calendario_mes":
|
||||
// Calendario - Mes
|
||||
$mes_correcto = date('m');
|
||||
$meses_esp = [
|
||||
1 => "Enero",
|
||||
2 => "Febrero",
|
||||
3 => "Marzo",
|
||||
4 => "Abril",
|
||||
5 => "Mayo",
|
||||
6 => "Junio",
|
||||
7 => "Julio",
|
||||
8 => "Agosto",
|
||||
9 => "Septiembre",
|
||||
10 => "Octubre",
|
||||
11 => "Noviembre",
|
||||
12 => "Diciembre"
|
||||
];
|
||||
$meses_eus = [
|
||||
1 => "Urtarrila",
|
||||
2 => "Otsaila",
|
||||
3 => "Martxoa",
|
||||
4 => "Apirila",
|
||||
5 => "Maiatza",
|
||||
6 => "Ekaina",
|
||||
7 => "Uztaila",
|
||||
8 => "Abuztua",
|
||||
9 => "Iraila",
|
||||
10 => "Urria",
|
||||
11 => "Azaroa",
|
||||
12 => "Abendua"
|
||||
];
|
||||
?>
|
||||
<div class="card pad">
|
||||
<h1>Calendario - Mes</h1>
|
||||
<span>
|
||||
Has seleccionado el día y el día de la semana correctos. ¡Ahora pon el mes!
|
||||
</span>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<script>
|
||||
function seleccionarMes(element, mes) {
|
||||
// Si es mes correcto
|
||||
if (mes == <?php echo $mes_correcto; ?>) {
|
||||
element.style.backgroundColor = "#9cff9f"; // Verde
|
||||
document.getElementById('win-sound').play();
|
||||
setTimeout(() => {
|
||||
window.location.href = "/entreaulas/paneldiario.php?aulario=<?php echo urlencode($_GET['aulario'] ?? ''); ?>";
|
||||
}, 2000);
|
||||
} else {
|
||||
element.style.backgroundColor = "#ff9088"; // Rojo
|
||||
document.getElementById('lose-sound').play();
|
||||
setTimeout(() => {
|
||||
element.style.backgroundColor = ""; // Volver al color anterior
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<?php foreach ($meses_esp as $mes => $mes_name) {
|
||||
?>
|
||||
<a class="card grid-item" style="width: 180px; height: 180px; color: black;"
|
||||
onclick="seleccionarMes(this, <?php echo $mes; ?>);">
|
||||
<span style="font-size: 24px;"><?php echo $mes_name; ?></span>
|
||||
<img src="/static/arasaac/mesesdelano/<?php echo strtolower($mes_name); ?>.png" alt=""
|
||||
style="width: 80px; height: 80px;">
|
||||
<span style="font-size: 24px; color: blue;"><?php echo $meses_eus[$mes]; ?></span>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<script>
|
||||
var msnry = new Masonry('.grid', {
|
||||
"columnWidth": 180,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {
|
||||
msnry.layout()
|
||||
}, 250); window.onresize = () => {msnry.layout()}
|
||||
</script>
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
require_once "_incl/post-body.php"; ?>
|
||||
76
public_html/index.php
Executable file
@@ -0,0 +1,76 @@
|
||||
<?php require_once "_incl/pre-body.php"; ?>
|
||||
<div class="card pad">
|
||||
<h1>¡Bienvenidx a Axia4!</h1>
|
||||
<span>Axia4 es la plataforma unificada de EuskadiTech y Sketaria.</span>
|
||||
</div>
|
||||
<div id="grid">
|
||||
<div class="card grid-item">
|
||||
<img src="/static/logo-club.png" alt="Logo Club">
|
||||
<b>La web del club</b>
|
||||
<a href="/club/" class="button">Acceso publico</a>
|
||||
</div>
|
||||
<div class="card grid-item">
|
||||
<img src="/static/logo-entreaulas.png" alt="Logo EntreAulas">
|
||||
<b>EntreAulas</b>
|
||||
<span>Gestión de aularios conectados.</span>
|
||||
<a href="/entreaulas/" class="button">Tengo cuenta</a>
|
||||
</div>
|
||||
<div class="card grid-item">
|
||||
<img src="/static/logo-oscar.png" alt="Logo OSCAR">
|
||||
<b>OSCAR</b>
|
||||
<span>Red de IA Absoluta.</span>
|
||||
<a href="/oscar/" disabled class="button">No disponible</a>
|
||||
</div>
|
||||
<div class="card grid-item">
|
||||
<img src="/static/logo-aularios.png" alt="Logo Aularios">
|
||||
<b>Aularios<sup>2</sup></b>
|
||||
<span>Acceso centralizado a los Aularios.</span>
|
||||
<a href="https://aularios.tech.eus" class="button">Tengo cuenta</a>
|
||||
<small>Externo</small>
|
||||
</div>
|
||||
<div class="card grid-item">
|
||||
<img src="/static/logo.png" alt="Logo Axia4 Cloud">
|
||||
<b>Nube Axia4</b>
|
||||
<span>Almacenamiento central de datos.</span>
|
||||
<a href="https://axia4.net" class="button">Tengo cuenta</a>
|
||||
<small>Externo</small>
|
||||
</div>
|
||||
<div class="card grid-item">
|
||||
<img src="/static/logo-nk4.svg" alt="Logo NK5">
|
||||
<b>Nube Kasa</b>
|
||||
<span>Nube personal con domotica.</span>
|
||||
<a href="https://nk4.tech.eus/_familia/" class="button">Acceso privado</a>
|
||||
<small>Externo</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.grid-item {
|
||||
margin-bottom: 10px !important;
|
||||
padding: 15px;
|
||||
width: 250px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.grid-item img {
|
||||
margin: 0 auto;
|
||||
height: 100px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script>
|
||||
var msnry = new Masonry('#grid', {
|
||||
"columnWidth": 250,
|
||||
"itemSelector": ".grid-item",
|
||||
"gutter": 10,
|
||||
"transitionDuration": 0
|
||||
});
|
||||
setTimeout(() => {msnry.layout()}, 250)
|
||||
setInterval(() => {
|
||||
msnry.layout()
|
||||
}, 1000);
|
||||
</script>
|
||||
|
||||
<?php require_once "_incl/post-body.php"; ?>
|
||||
|
||||
7
public_html/lazo.php
Executable file
@@ -0,0 +1,7 @@
|
||||
<?php require_once "_incl/pre-body.php"; ?>
|
||||
<div class="card" style="padding: 15px; text-align: center;">
|
||||
<img src="/static/lazo_negro.png" alt="Lazo negro" style="height: 100px; width: auto; margin-bottom: 15px; margin: 0 auto;">
|
||||
<h1 style="font-size: 27.5px;">Nuestra solidaridad con las víctimas y familiares del grave accidente de Adamuz</h1>
|
||||
<em>- EuskadiTech y Sketaria.</em>
|
||||
</div>
|
||||
<?php require_once "_incl/post-body.php"; ?>
|
||||
BIN
public_html/static/.DS_Store
vendored
Executable file
BIN
public_html/static/arasaac/calendario.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public_html/static/arasaac/diadelasemana/domingo.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
public_html/static/arasaac/diadelasemana/jueves.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
public_html/static/arasaac/diadelasemana/lunes.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
public_html/static/arasaac/diadelasemana/martes.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
public_html/static/arasaac/diadelasemana/miércoles.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
public_html/static/arasaac/diadelasemana/viernes.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
public_html/static/arasaac/mesesdelano/abril.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public_html/static/arasaac/mesesdelano/agosto.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public_html/static/arasaac/mesesdelano/diciembre.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public_html/static/arasaac/mesesdelano/enero.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public_html/static/arasaac/mesesdelano/febrero.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
public_html/static/arasaac/mesesdelano/julio.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public_html/static/arasaac/mesesdelano/junio.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public_html/static/arasaac/mesesdelano/marzo.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public_html/static/arasaac/mesesdelano/mayo.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public_html/static/arasaac/mesesdelano/noviembre.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public_html/static/arasaac/mesesdelano/octubre.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public_html/static/arasaac/mesesdelano/septiembre.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
1
public_html/static/filetype/file-pdf-box.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.5 11.5C9.5 12.3 8.8 13 8 13H7V15H5.5V9H8C8.8 9 9.5 9.7 9.5 10.5V11.5M14.5 13.5C14.5 14.3 13.8 15 13 15H10.5V9H13C13.8 9 14.5 9.7 14.5 10.5V13.5M18.5 10.5H17V11.5H18.5V13H17V15H15.5V9H18.5V10.5M12 10.5H13V13.5H12V10.5M7 10.5H8V11.5H7V10.5Z" /></svg>
|
||||
|
After Width: | Height: | Size: 411 B |
1
public_html/static/filetype/file-question.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14C15,15.88 12.75,16.06 12.75,17.75H11.25C11.25,15.31 13.5,15.5 13.5,14A1.5,1.5 0 0,0 12,12.5A1.5,1.5 0 0,0 10.5,14H9A3,3 0 0,1 12,11M11.25,18.5H12.75V20H11.25V18.5Z" /></svg>
|
||||
|
After Width: | Height: | Size: 353 B |
1
public_html/static/filetype/folder.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></svg>
|
||||
|
After Width: | Height: | Size: 172 B |
1
public_html/static/filetype/image.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z" /></svg>
|
||||
|
After Width: | Height: | Size: 194 B |
1
public_html/static/html5-qrcode.min.js
vendored
Executable file
BIN
public_html/static/iconexperience/add.png
Executable file
|
After Width: | Height: | Size: 17 KiB |
BIN
public_html/static/iconexperience/barcode.png
Executable file
|
After Width: | Height: | Size: 39 KiB |
BIN
public_html/static/iconexperience/bell3.png
Executable file
|
After Width: | Height: | Size: 44 KiB |
BIN
public_html/static/iconexperience/calendar_preferences.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
public_html/static/iconexperience/certificate_add.png
Executable file
|
After Width: | Height: | Size: 52 KiB |
BIN
public_html/static/iconexperience/certificate_ok.png
Executable file
|
After Width: | Height: | Size: 59 KiB |
BIN
public_html/static/iconexperience/contract.png
Executable file
|
After Width: | Height: | Size: 64 KiB |
BIN
public_html/static/iconexperience/delivery_man_parcel.png
Executable file
|
After Width: | Height: | Size: 38 KiB |
BIN
public_html/static/iconexperience/find.png
Executable file
|
After Width: | Height: | Size: 57 KiB |
BIN
public_html/static/iconexperience/floppy_disk.png
Executable file
|
After Width: | Height: | Size: 23 KiB |
BIN
public_html/static/iconexperience/floppy_disk_green.png
Executable file
|
After Width: | Height: | Size: 27 KiB |
BIN
public_html/static/iconexperience/garbage.png
Executable file
|
After Width: | Height: | Size: 52 KiB |
BIN
public_html/static/iconexperience/gear_edit.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
public_html/static/iconexperience/led_blue.png
Executable file
|
After Width: | Height: | Size: 77 KiB |
BIN
public_html/static/iconexperience/led_green.png
Executable file
|
After Width: | Height: | Size: 47 KiB |
BIN
public_html/static/iconexperience/led_red.png
Executable file
|
After Width: | Height: | Size: 42 KiB |
BIN
public_html/static/iconexperience/led_white.png
Executable file
|
After Width: | Height: | Size: 45 KiB |
BIN
public_html/static/iconexperience/led_yellow.png
Executable file
|
After Width: | Height: | Size: 45 KiB |
BIN
public_html/static/iconexperience/lightbulb.png
Executable file
|
After Width: | Height: | Size: 46 KiB |
BIN
public_html/static/iconexperience/lightbulb_on.png
Executable file
|
After Width: | Height: | Size: 40 KiB |
BIN
public_html/static/iconexperience/loudspeaker.png
Executable file
|
After Width: | Height: | Size: 58 KiB |
BIN
public_html/static/iconexperience/loudspeaker2.png
Executable file
|
After Width: | Height: | Size: 63 KiB |
BIN
public_html/static/iconexperience/moon.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
public_html/static/iconexperience/moon_half.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
public_html/static/iconexperience/purchase_order_cart.png
Executable file
|
After Width: | Height: | Size: 35 KiB |
BIN
public_html/static/iconexperience/shelf.png
Executable file
|
After Width: | Height: | Size: 62 KiB |
BIN
public_html/static/iconexperience/shopping_cart.png
Executable file
|
After Width: | Height: | Size: 70 KiB |
BIN
public_html/static/iconexperience/signal_flag_checkered.png
Executable file
|
After Width: | Height: | Size: 31 KiB |
BIN
public_html/static/iconexperience/signal_flag_green.png
Executable file
|
After Width: | Height: | Size: 32 KiB |
BIN
public_html/static/iconexperience/signal_flag_red.png
Executable file
|
After Width: | Height: | Size: 29 KiB |
BIN
public_html/static/iconexperience/signal_flag_white.png
Executable file
|
After Width: | Height: | Size: 30 KiB |
BIN
public_html/static/iconexperience/signal_flag_yellow.png
Executable file
|
After Width: | Height: | Size: 31 KiB |
BIN
public_html/static/iconexperience/sort_down_minus.png
Executable file
|
After Width: | Height: | Size: 19 KiB |
BIN
public_html/static/iconexperience/step.png
Executable file
|
After Width: | Height: | Size: 23 KiB |
BIN
public_html/static/iconexperience/symbol_questionmark.png
Executable file
|
After Width: | Height: | Size: 29 KiB |
BIN
public_html/static/iconexperience/truck_green.png
Executable file
|
After Width: | Height: | Size: 61 KiB |
BIN
public_html/static/lazo_negro.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public_html/static/logo-alortu.png
Executable file
|
After Width: | Height: | Size: 48 KiB |
BIN
public_html/static/logo-aularios.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
public_html/static/logo-club.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
public_html/static/logo-entreaulas.png
Executable file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
public_html/static/logo-hyper.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
public_html/static/logo-media.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
public_html/static/logo-newold.png
Executable file
|
After Width: | Height: | Size: 12 KiB |
100
public_html/static/logo-nk4.svg
Executable file
@@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg version="1.1" width="64" height="64" color-interpolation="linearRGB"
|
||||
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
|
||||
<g>
|
||||
<path style="fill:#000000; fill-opacity:0.4078"
|
||||
d="M19 58L29 57L34 64C34 64 43 65 50 62C57 59 65.26 51.95 64 45C62 34 50 40 50 40H38V44H44L35 52H24L19 58z"
|
||||
/>
|
||||
<path style="fill:none; stroke:#000000; stroke-width:4; stroke-linejoin:round"
|
||||
d="M20 16C16 22 16 26 16 30C16 34 18 36 18 36V50C18 50 10 56 20 56C28 56 24 38 24 38L32 42V54C32 54 20 62 34 62C42 62 36 34 36 34L40 30C40 30 44 34 46 34C48 34 50 34 50 34L52 40C52 40 44 46 56 46C64 46 54 30 54 30H52C52 30 52 24 52 20C52 16.81 50.72 11.81 46.16 8.08C58 16 58 2 58 2C58 2 52 10 42 6C36.12 3.65 24 10 20 16z"
|
||||
/>
|
||||
<radialGradient id="gradient0" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="64" gradientTransform="matrix(0.7031,0,0,0.7499,19,13)">
|
||||
<stop offset="0" stop-color="#dda771"/>
|
||||
<stop offset="0.9962" stop-color="#a97644"/>
|
||||
</radialGradient>
|
||||
<path style="fill:url(#gradient0)"
|
||||
d=""
|
||||
/>
|
||||
<linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="21.52" y1="-12.88" x2="53.86" y2="-5.66">
|
||||
<stop offset="0" stop-color="#875b2f"/>
|
||||
<stop offset="1" stop-color="#c58a50"/>
|
||||
<stop offset="0.7706" stop-color="#a97644"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#gradient1)"
|
||||
d="M32 17L16 29V31C16 31 19 31 21 33C23 35 24 38 24 38L32 42V54C32 54 20 62 34 62C42 62 36 34 36 34C36 34 38 28 38 26C38 24 36.33 19.7 32 17z"
|
||||
/>
|
||||
<radialGradient id="gradient2" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="64" gradientTransform="matrix(0.7031,0,0,0.7499,19,13)">
|
||||
<stop offset="0" stop-color="#dda771"/>
|
||||
<stop offset="0.9962" stop-color="#a97644"/>
|
||||
</radialGradient>
|
||||
<path style="fill:url(#gradient2)"
|
||||
d="M40 30C40 30 43.15 30.94 46 30C49 29 50 22 50 20C50 14 46.16 8.08 46.16 8.08C46.16 8.08 41 6 37 7C29 9 21 19 21 19L32 17C36.33 19.7 38 24 38 26C38 28 36 34 36 34L40 30z"
|
||||
/>
|
||||
<path style="fill:#d7a26e"
|
||||
d="M18 36V50C18 50 10 56 20 56C28 56 24 38 24 38C24 38 23 35 21 33C19 31 16 31 16 31L18 36z"
|
||||
/>
|
||||
<linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="42.37" y1="-14.97" x2="64.49" y2="-12.12">
|
||||
<stop offset="0" stop-color="#c28d59"/>
|
||||
<stop offset="1" stop-color="#b6783b"/>
|
||||
<stop offset="0.8646" stop-color="#a26c38"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#gradient3)"
|
||||
d="M50 20C50 22 49 29 46 30C43.15 30.94 40 30 40 30C40 30 44 34 46 34C48 34 50 34 50 34L52 40C52 40 44 46 56 46C64 46 54 30 54 30H52C52 30 52 24 52 20C52 16.81 50.72 11.81 46.16 8.08C46.16 8.08 50 14 50 20z"
|
||||
/>
|
||||
<linearGradient id="gradient4" gradientUnits="userSpaceOnUse" x1="19.03" y1="-15.59" x2="40.05" y2="-20.72">
|
||||
<stop offset="0" stop-color="#f4c597"/>
|
||||
<stop offset="1" stop-color="#daa470"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#gradient4)"
|
||||
d="M20 16L21 20C21 20 29 8.99 37 7C41 6 46.16 8.08 46.16 8.08L42 6C36.12 3.65 24 10 20 16z"
|
||||
/>
|
||||
<path style="fill:#daa470"
|
||||
d="M58 2C58 2 52 10 42 6L44 7C57 12 58 2 58 2z"
|
||||
/>
|
||||
<linearGradient id="gradient5" gradientUnits="userSpaceOnUse" x1="42.37" y1="-14.97" x2="64.49" y2="-12.12">
|
||||
<stop offset="0" stop-color="#c28d59"/>
|
||||
<stop offset="1" stop-color="#b6783b"/>
|
||||
<stop offset="0.8646" stop-color="#a26c38"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#gradient5)"
|
||||
d="M46.16 8.08C58 16 58 2 58 2C58 2 57 12 44.02 7.01L46.16 8.08z"
|
||||
/>
|
||||
<path style="fill:none; stroke:#000000; stroke-width:4; stroke-linejoin:round"
|
||||
d="M16 6C16 6 13 4 8 6C2.74 8.1 2 14 2 14L12 12L16 6z"
|
||||
/>
|
||||
<path style="fill:#f8cca1"
|
||||
d="M16 6C16 6 13 4 8 6C2.74 8.1 2 14 2 14L12 12L16 6z"
|
||||
/>
|
||||
<path style="fill:none; stroke:#000000; stroke-width:4; stroke-linejoin:round"
|
||||
d="M28.09 12.5C28.66 14.09 28.69 15.93 28 18C27.25 20.23 25.4 22.33 23.05 24.03C23.05 24.03 22 17 21 15L28.09 12.5z
|
||||
M20 6C23.93 7.3 27 9.47 28.09 12.5L21 15C22 17 23.05 24.03 23.05 24.03C19.76 26.41 15.5 28 12 28C6 28 4.46 24.13 6 18C8 10 11.51 3.17 20 6z"
|
||||
/>
|
||||
<radialGradient id="gradient6" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="64" gradientTransform="matrix(0.2047,0.1393,-0.3093,0.4543,8.9428,7.1471)">
|
||||
<stop offset="0" stop-color="#fdd6ab"/>
|
||||
<stop offset="1" stop-color="#c48b54"/>
|
||||
</radialGradient>
|
||||
<path style="fill:url(#gradient6)"
|
||||
d="M20 6C23.93 7.3 27 9.47 28.09 12.5L21 15C22 17 23.05 24.03 23.05 24.03C19.76 26.41 15.5 28 12 28C6 28 4.46 24.13 6 18C8 10 11.51 3.17 20 6z"
|
||||
/>
|
||||
<path style="fill:#99632d"
|
||||
d="M28.09 12.5C28.66 14.09 28.69 15.93 28 18C27.25 20.23 25.4 22.33 23.05 24.03C23.05 24.03 22 17 21 15L28.09 12.5z"
|
||||
/>
|
||||
<path style="fill:#000000"
|
||||
d="M20 14C20 14 22 16 24 18C25.05 19.05 30 24 30 24C30 24 33 20 32 16C30.78 11.14 24 8 24 8C24 8 33.01 10.08 34 16C35 22 31 26 31 26C31 26 26 22 24 20C22 18 20 14 20 14z"
|
||||
/>
|
||||
<linearGradient id="gradient7" gradientUnits="userSpaceOnUse" x1="32.03" y1="-0.01" x2="41.41" y2="9.37">
|
||||
<stop offset="0" stop-color="#d4975b"/>
|
||||
<stop offset="1" stop-color="#a06f40"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#gradient7)"
|
||||
d="M20 14L24 8C24 8 30.78 11.14 32 16C33 20 30 24 30 24C30 24 26 20 24 18C22 16 20 14 20 14z"
|
||||
/>
|
||||
<path style="fill:#000000"
|
||||
d="M8.09 24.4L11 23V22L6 20V21L8.09 24.4z"
|
||||
/>
|
||||
<path style="fill:#000000"
|
||||
d="M9 12C8.44 12 8 13.11 8 14.5C8 15.88 8.44 17 9 17C9.55 17 11 15.88 11 14.5C11 13.11 9.55 12 9 12z
|
||||
M16 16C14.89 16 14 16.89 14 18C14 19.1 14.89 20 16 20C17.1 20 18 19.1 18 18C18 16.89 17.1 16 16 16z"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
BIN
public_html/static/logo-nk5.png
Executable file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
public_html/static/logo-old.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
public_html/static/logo-oscar.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
public_html/static/logo.png
Normal file
|
After Width: | Height: | Size: 18 KiB |