Actualiza web: secciones, estilos e imágenes

This commit is contained in:
root 2026-04-08 23:14:12 +02:00
parent 124512a4dd
commit d0e746c079
11 changed files with 435 additions and 217 deletions

View file

@ -48,17 +48,16 @@
<ul>
<li><a href="/index.html#feminismos">feminismos tetuan</a></li>
<li><a href="/subdir/campa.html">campañas</a></li>
<li><a href="/index.html#yoga">yoga</a></li>
<li><a href="/index.html#fridays">fridays for future</a></li>
<li><a href="/index.html#OVT">organizacion vivienda tetuan</a></li>
<li><a href="/#circo/">circo</a></li>
<li><a href="/index.html#ovt">organizacion vivienda tetuan</a></li>
<li><a href="/index.html#circo/">circo</a></li>
<li><a href="https://hacklab.laenre.net">hacklab la raiz</a></li>
<li><a href="/#tienda_gratis/">tienda gratis</a></li>
<li><a href="/#biblioteka/">biblioteka</a></li>
<li><a href="/#Warawas/">warawas</a></li>
<li><a href="/#Hongos/">hongos</a></li>
<li><a href="/#Fermentos/">fermentos</a></li>
<li><a href="/#bicilab/">bicilab</a></li>
<li><a href="/index.html#tienda_gratis/">tienda gratis</a></li>
<li><a href="/index.html#biblioteka/">biblioteka</a></li>
<li><a href="/index.html#Warawas/">warawas</a></li>
<li><a href="/index.html#Hongos/">hongos</a></li>
<li><a href="/index.html#Fermentos/">fermentos</a></li>
<li><a href="/index.html#bicilab/">bicilab</a></li>
</ul>
</nav>
@ -79,151 +78,181 @@
<!-- Aquí el JS pintará el calendario -->
</div>
<script>
(function () {
const monthNames = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
const weekdayNames = ['L','M','X','J','V','S','D']; // lunes primero (ES)
<script>
(function () {
const monthNames = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
const weekdayNames = ['L','M','X','J','V','S','D']; // lunes primero (ES)
const ENRE_EVENTS_URL = 'https://mad.convoca.la/place/42/CSOA%20La%20Enredadera%20de%20Tetu%C3%A1n';
// Paleta por colectivo
const COLORS = {
hacklab: { bg:'#39FF14', fg:'#000' }, // verde neón + negro (original)
feminismos: { bg:'#6A0DAD', fg:'#fff' }, // morado + blanco
vivienda: { bg:'#000000', fg:'#ff00aa' },// negro + rosa
circo: { bg:'#FFD400', fg:'#000' }, // amarillo + negro
bicilab: { bg:'#FF7A00', fg:'#000' }, // naranja + negro
autodefensa: { bg:'#00BCD4', fg:'#fff' }, // cian + blanco
fridays: { bg:'#2E8B57', fg:'#fff' } // verde oscuro + blanco
};
// Paleta por colectivo
const COLORS = {
hacklab: { bg:'#39FF14', fg:'#000' }, // verde neón + negro (original)
feminismos: { bg:'#6A0DAD', fg:'#fff' }, // morado + blanco
vivienda: { bg:'#000000', fg:'#ff00aa' },// negro + rosa
circo: { bg:'#FFD400', fg:'#000' }, // amarillo + negro
bicilab: { bg:'#FF7A00', fg:'#000' }, // naranja + negro
autodefensa: { bg:'#00BCD4', fg:'#fff' }, // cian + blanco
fridays: { bg:'#2E8B57', fg:'#fff' }, // verde oscuro + blanco
euskera: { bg:'#FF0000', fg:'#00ff00' }, // rojo + verde
asamblea_enre: { bg:'#ff00ff', fg:'#fff' }, // rosa + blanco
asamblea_externas: { bg:'#FFF', fg:'#ff00ff' } // rosa + blanco
};
// Horarios semanales (sin viernes: se gestionan aparte)
const WEEKLY = [
{ group:'vivienda', dow:3, start:'19:00', end:'21:00' }, // jueves
{ group:'circo', dow:0, start:'18:00', end:'21:00' }, // lunes
{ group:'circo', dow:2, start:'18:00', end:'21:00' }, // miércoles
{ group:'feminismos', dow:2, start:'19:30', end:'21:30' }, // miércoles
{ group:'bicilab', dow:6, start:'17:00', end:'20:00' }, // domingo
{ group:'autodefensa', dow:1, start:'20:00', end:'22:00' }, // martes
{ group:'autodefensa', dow:2, start:'20:00', end:'22:00' } // miércoles
];
// Horarios semanales (sin viernes: se gestionan aparte)
const WEEKLY = [
{ group:'asamblea_externas', dow:0, start:'19:00', end:''}, // lunes
{ group:'asamblea_enre',dow:0, start:'20:00', end:'' }, // lunes
{ group:'teatro', dow:2, start:'11:00', end:'12:30' }, // miércoles
{ group:'autodefensa', dow:1, start:'20:00', end:'22:00' }, // martes
{ group:'autodefensa', dow:2, start:'20:00', end:'22:00' }, // miércoles
{ group:'euskera', dow:2, start:'18:15', end:'21:00' }, // miércoles
{ group:'vivienda', dow:3, start:'19:00', end:'21:30' }, // jueves
{ group:'feminismos', dow:3, start:'20:00', end:'21:30' }, // jueves
{ group:'fridays', dow:4, start:'19:00', end:'21:00' }, // viernes
{ group:'hacklab', dow:4, start:'18:00', end:'23:00' }, // viernes
{ group:'bicilab', dow:6, start:'19:00', end:'20:30' }, // domingo
{ group:'montana', dow:6, start:'10:00', end:'14:00' } // domingo
];
function createPill(text, bg, fg) {
const pill = document.createElement('div');
pill.className = 'cal-pill';
pill.style.setProperty('--bg', bg);
pill.style.setProperty('--fg', fg);
pill.textContent = text;
return pill;
}
function createPill(text, bg, fg) {
const pill = document.createElement('div');
pill.className = 'cal-pill';
pill.style.setProperty('--bg', bg);
pill.style.setProperty('--fg', fg);
pill.textContent = text;
function renderWeeklyPills(cell, wd){
const todays = WEEKLY.filter(e => e.dow === wd);
if (!todays.length) return;
const wrap = document.createElement('div');
wrap.className = 'cal-pills';
todays.forEach(e => {
const { bg, fg } = COLORS[e.group] || { bg:'#eee', fg:'#000' };
const name = e.group.charAt(0).toUpperCase() + e.group.slice(1);
wrap.appendChild(createPill(`${name} ${e.start}-${e.end}`, bg, fg));
});
cell.appendChild(wrap);
}
pill.setAttribute('role', 'link');
pill.setAttribute('tabindex', '0');
pill.style.cursor = 'pointer';
const root = document.getElementById('cal-root');
const title = document.querySelector('.cal-title');
const btnPrev = document.querySelector('.cal-prev');
const btnNext = document.querySelector('.cal-next');
pill.addEventListener('click', () => {
window.location.href = ENRE_EVENTS_URL;
});
let view = new Date(); // hoy
view.setDate(1); // primer día del mes
pill.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
window.location.href = ENRE_EVENTS_URL;
}
});
function buildCalendar(date){
root.innerHTML = '';
return pill;
}
const year = date.getFullYear();
const month = date.getMonth();
title.textContent = monthNames[month] + ' ' + year;
function renderWeeklyPills(cell, wd){
const todays = WEEKLY.filter(e => e.dow === wd);
if (!todays.length) return;
// semanas empiezan en lunes
const first = new Date(year, month, 1);
let startIndex = (first.getDay() + 6) % 7;
const daysInMonth= new Date(year, month + 1, 0).getDate();
const wrap = document.createElement('div');
wrap.className = 'cal-pills';
// localizar viernes del mes
const fridays = [];
for (let d = 1; d <= daysInMonth; d++){
const wd = (new Date(year, month, d).getDay() + 6) % 7;
if (wd === 4) fridays.push(d);
}
const secondFri = fridays[1]; // 2º viernes
todays.forEach(e => {
const { bg, fg } = COLORS[e.group] || { bg:'#eee', fg:'#000' };
const name = e.group.charAt(0).toUpperCase() + e.group.slice(1);
wrap.appendChild(createPill(`${name} ${e.start}-${e.end}`, bg, fg));
});
// cabecera
const head = document.createElement('div');
head.className = 'cal-row cal-head';
weekdayNames.forEach(w => {
const cell = document.createElement('div');
cell.className = 'cal-cell cal-head-cell';
cell.textContent = w;
head.appendChild(cell);
});
root.appendChild(head);
cell.appendChild(wrap);
}
// grid 6x7
let day = 1 - startIndex;
for (let r = 0; r < 6; r++){
const row = document.createElement('div');
row.className = 'cal-row';
for (let c = 0; c < 7; c++){
const cell = document.createElement('div');
cell.className = 'cal-cell';
const root = document.getElementById('cal-root');
const title = document.querySelector('.cal-title');
const btnPrev = document.querySelector('.cal-prev');
const btnNext = document.querySelector('.cal-next');
if (day >= 1 && day <= daysInMonth){
const num = document.createElement('span');
num.className = 'cal-daynum';
num.textContent = day;
cell.appendChild(num);
let view = new Date(); // hoy
view.setDate(1); // primer día del mes
const wd = (new Date(year, month, day).getDay() + 6) % 7; // lunes=0
function buildCalendar(date){
root.innerHTML = '';
if (wd === 4){
// VIERNES: por defecto en blanco
// 2º viernes -> ART-LAB (neón + rosa)
// 1º/3º/4º/5º -> HACKLAB (neón + negro)
const wrap = document.createElement('div');
wrap.className = 'cal-pills';
if (day === secondFri){
wrap.appendChild(createPill('ART-LAB', '#39FF14', '#ff00aa'));
} else {
wrap.appendChild(createPill('HACKLAB', '#39FF14', '#000'));
}
cell.appendChild(wrap);
} else {
// Resto: semanales normales con sus colores
renderWeeklyPills(cell, wd);
}
const year = date.getFullYear();
const month = date.getMonth();
title.textContent = monthNames[month] + ' ' + year;
// semanas empiezan en lunes
const first = new Date(year, month, 1);
let startIndex = (first.getDay() + 6) % 7;
const daysInMonth = new Date(year, month + 1, 0).getDate();
// localizar viernes del mes
const fridays = [];
for (let d = 1; d <= daysInMonth; d++){
const wd = (new Date(year, month, d).getDay() + 6) % 7;
if (wd === 4) fridays.push(d);
}
const secondFri = fridays[1]; // 2º viernes
// cabecera
const head = document.createElement('div');
head.className = 'cal-row cal-head';
weekdayNames.forEach(w => {
const cell = document.createElement('div');
cell.className = 'cal-cell cal-head-cell';
cell.textContent = w;
head.appendChild(cell);
});
root.appendChild(head);
// grid 6x7
let day = 1 - startIndex;
for (let r = 0; r < 6; r++){
const row = document.createElement('div');
row.className = 'cal-row';
for (let c = 0; c < 7; c++){
const cell = document.createElement('div');
cell.className = 'cal-cell';
if (day >= 1 && day <= daysInMonth){
const num = document.createElement('span');
num.className = 'cal-daynum';
num.textContent = day;
cell.appendChild(num);
const wd = (new Date(year, month, day).getDay() + 6) % 7; // lunes=0
if (wd === 4){
// VIERNES: por defecto en blanco
// 2º viernes -> ART-LAB (neón + rosa)
// 1º/3º/4º/5º -> HACKLAB (neón + negro)
const wrap = document.createElement('div');
wrap.className = 'cal-pills';
if (day === secondFri){
wrap.appendChild(createPill('ART-LAB', '#39FF14', '#ff00aa'));
} else {
wrap.appendChild(createPill('HACKLAB', '#39FF14', '#000'));
}
cell.appendChild(wrap);
} else {
cell.classList.add('cal-empty');
// Resto: semanales normales con sus colores
renderWeeklyPills(cell, wd);
}
} else {
cell.classList.add('cal-empty');
}
row.appendChild(cell);
day++;
}
root.appendChild(row);
}
}
row.appendChild(cell);
day++;
}
root.appendChild(row);
}
}
function shiftMonth(delta){
view.setMonth(view.getMonth() + delta);
buildCalendar(view);
}
function shiftMonth(delta){
view.setMonth(view.getMonth() + delta);
buildCalendar(view);
}
btnPrev.addEventListener('click', () => shiftMonth(-1));
btnNext.addEventListener('click', () => shiftMonth(1));
btnPrev.addEventListener('click', () => shiftMonth(-1));
btnNext.addEventListener('click', () => shiftMonth(1));
buildCalendar(view);
})();
</script>
buildCalendar(view);
})();
</script>
@ -232,73 +261,155 @@
</section>
<section id="ovt">
<h2> Colectivo de Vivienda</h2>
<p>Asamblea abierta desde donde defendemos que la vivienda es para quien la habita y no un negocio.</p>
<button <a href="https://okupanel.laenre.net">Twitter</button>
</section>
<section id="yoga">
<h2> Colectivo de Yoga</h2>
<p>Sesiones abiertas y gratuitas de yoga, meditación y respiración consciente. Espacio de bienestar colectivo.</p>
</section>
<section id="feminismos">
<h2> Feminismos</h2>
<p>Organizamos talleres, círculos de lectura y encuentros de autodefensa. Un espacio para el debate y la acción feminista autónoma.</p>
<p>
<strong>Feminismo Tetuán</strong> es una asamblea de barrio que nace a raíz
del movimiento del <strong>8M</strong>.
</p>
<a class="colectivo-img-link" href="https://www.instagram.com/feminismostetuan" target="_blank" rel="noopener">
<img class="colectivo-img" src="/INFO/feminismos_tetuan.jpg" alt="Feminismos Tetuán">
</a>
<a class="colectivo-btn" href="https://linktr.ee/FeminismosTetuan?utm_source=ig&utm_medium=social&utm_content=link_in_bio&fbclid=PAZXh0bgNhZW0CMTEAc3J0YwZhcHBfaWQMMjU2MjgxMDQwNTU4AAGnRoxnOqEyhqJxFoRTPlDSH8zvge2GNvrAQDn4Ou98RwCysuYT0AABDgbbFWw_aem_tbCIw3s5HlsIgRoH4D4p1A" target="_blank" rel="noopener">
LinkTree
</a>
<a class="colectivo-btn" href="https://www.instagram.com/feminismostetuan/" target="_blank" rel="noopener">
Instagram
</a>
<p>
Es una asamblea abierta no mixta transinclusiva.
<br>
<strong>Nos reunimos los jueves a las 20</strong> en el CSO La Enredadera,
donde organizamos acciones, debates.
</p>
<p>
<strong>Uno de los temas que más trabajamos</strong> es el derecho a la libre
intervención del embarazo, ya que en nuestro barrio se encuentra la clínica
Dator, la primera clínica en realizar abortos en España. Esta clínica está
bajo el ataque constant>
</p>
<p>
También realizamos debates y otras acciones, como salir a la plaza una vez al
mes para visibilizar las violencias que sufren las mujeres en la sociedad
patriarcal, o debates sobre temas como la pronografía, la prostitución, etc.
</p>
<p>
<strong>Queremos mantener viva la lucha</strong> contra la sociedad patriarcal
y lo vemos como algo muy necesario en el momento actual, en el que la extrema
derecha está atacando los derechos de las mujeres y personas trans. De ahí
que sigamos con nues>
</p>
</section>
<section id="fridays">
<h2>Fridays for Future</h2>
<p>Movilización climática juvenil, asambleas abiertas y acciones directas para la justicia ambiental y el decrecimiento.</p>
<p>Somos parte del movimiento global juvenil por la Justicia Climática.</p>
<a class="colectivo-img-link" href="https://linktr.ee/fridaysforfuturemadrid" target="_blank" rel="noopener">
<img class="colectivo-img" src="/INFO/photo_5913560549843653631_y.jpg" alt="Fridays for Future Madrid">
</a>
<a class="colectivo-img-link" href="https://linktr.ee/fridaysforfuturemadrid" target="_blank" rel="noopener">
<img class="colectivo-img" src="/INFO/fridays_madrid.jpg" alt="Fridays for Future Madrid">
</a>
<a class="colectivo-btn" href="https://linktr.ee/fridaysforfuturemadrid" target="_blank" rel="noopener">
LinkTree
</a>
<a class="colectivo-btn" href="https://www.instagram.com/fridaysformadrid/" target="_blank" rel="noopener">
Instagram
</a>
</section>
<section id="ovt">
<h2> Colectivo de Vivienda</h2>
<p>Asamblea abierta desde donde defendemos que la vivienda es para quien la habita y no un negocio.</p>
<a class="colectivo-img-link" href="https://www.instagram.com/organizacionviviendatetuan/" target="_blank" rel="noopener">
<img class="colectivo-img" src="/INFO/ovt.jpg" alt="Organización Vivienda Tetuán">
</a>
<a class="colectivo-btn" href="https://www.instagram.com/organizacionviviendatetuan/" target="_blank" rel="noopener">
Instagram
</a>
</section>
<section id="circo">
<h2> Circo</h2>
<p>Información próximamente.</p>
</section>
<section id="hacklab">
<h2> Hacklab</h2>
<p>Espacio de tecnología libre, hacking ético y ciberseguridad. Nos reunimos semanalmente para compartir conocimientos sobre privacidad digital, redes descentralizadas y criptografía.</p>
<button onclick=https://hacklab.laenre.net>hacklab.laenre.net</button>
<a class="colectivo-img-link" href="html://hacklab.laenre.net" target="_blank" rel="noopener">
<img class="colectivo-img" src="/INFO/hacklab.jpeg" alt="">
</a>
<a class="colectivo-img-link" href="https://hacklab.laenre.net/eventos.html" target="_blank" rel="noopener">
<img class="colectivo-img" src="/INFO/teclado_negro_planta.jpg" alt="">
</a>
<a class="colectivo-btn" href="https://hacklab.laenre.net" target="_blank" rel="noopener">
hacklab.laenre.net
</a>
</section>
<section id="musica_andina">
<h2>🎶Colectivo de Música Andina</h2>
<p>Preservamos y difundimos la música tradicional andina como herramienta de resistencia cultural.</p>
<button onclick="window.location.href='/archivos/musica_andina.pdf'">📥 Descargar Cancionero</button>
<section id="tienda-gratis">
<h2> Tienda Gratis</h2>
<p>Información próximamente.</p>
</section>
<section id="tatus">
<h2>🖋Tatus circus</h2>
<p>Tatuajes artesanales con simbología política, tribal y de resistencia callejera.</p>
<button onclick="window.location.href='/archivos/tatus_warrix.pdf'">📥 Descargar Portafolio</button>
<section id="biblioteka">
<h2> Biblioteca Libre</h2>
<p>Accede a libros, fanzines y documentos sobre activismo, agroecología, tecnología libre y feminismos.</p>
<a class="colectivo-btn" href="/archivos/biblioteca.pdf">
Mas información
</a>
</section>
<section id="artistico">
<h2> Colectivo Artístico</h2>
<p>Muralismo, arte urbano, intervenciones visuales y talleres de creación colaborativa.</p>
<button onclick="window.location.href='/archivos/artistico.pdf'">📥 Descargar Dossier</button>
<section id="warawas">
<h2> Warawas</h2>
<p>Información próximamente.</p>
</section>
<section id="hongos">
<h2> Hongos</h2>
<p>Información próximamente.</p>
</section>
<section id="fermentos">
<h2> Fermentos</h2>
<p>Información próximamente.</p>
</section>
<section id="bicilab">
<h2>BICILAB</h2>
<p>Bocata de espaguetis todos los domingos a las 17:00 nos engrasamos las manos y recuperamos tu bicicleta!</p>
<button onclick="window.location.href='/archivos/asamblea.pdf'">📥 Descargar Actas</button>
</section>
<section id="biblioteca">
<h2>📚 Biblioteca Libre</h2>
<p>Accede a libros, fanzines y documentos sobre activismo, agroecología, tecnología libre y feminismos.</p>
<button onclick="window.location.href='/archivos/biblioteca.pdf'">Mas información</button>
<a class="colectivo-btn" href="/archivos/asamblea.pdf">
Descargar Actas
</a>
</section>
<footer>
<p>📩 Contacto: <a href="mailto:enredadera@riseup.net">enredadera@riseup.net</a></p>
<p>📌 Plaza de la Resistencia, Local 3, Madrid</p>
<p>⚡ Mastodon: <a href="https://mastodon.social/@laenre">@laenre@mastodon.social</a></p>
<p>📌 Calle de la coruña numero 5, Madrid</p>
<p>⚡ Mastodon: <a href="masto.es/@csolaenre">@csolaenre</a></p>
</footer>
</main>
</div>