diff --git a/.gitignore b/.gitignore index c77287a..b6515b7 100644 --- a/.gitignore +++ b/.gitignore @@ -29,5 +29,3 @@ prisma/dev.db # opencode - agentes y scripts locales (no subir a producción) opencode/ .opencode/ -.env -docs/ diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro index 541a678..a1ff7be 100644 --- a/src/components/BaseHead.astro +++ b/src/components/BaseHead.astro @@ -8,6 +8,7 @@ const { image = null, url = null, date = null, + noindex = false, } = Astro.props; const imageUrl = image ? new URL(image, Astro.site).toString() : null; @@ -20,6 +21,7 @@ const canonicalURL = new URL(url || Astro.url.pathname, Astro.site); + {noindex && } {title} diff --git a/src/content/news/en/2025-09-05.md b/src/content/news/en/2025-08-29.md similarity index 99% rename from src/content/news/en/2025-09-05.md rename to src/content/news/en/2025-08-29.md index 0a7110e..1741a8a 100644 --- a/src/content/news/en/2025-09-05.md +++ b/src/content/news/en/2025-08-29.md @@ -2,7 +2,7 @@ locale: en title: 'A New Son for Jacareí: The Tribute to Dr. José Benjamín Pérez Matos' slug: a-new-son-for-jacarei-the-tribute-to-dr-jose-benjamin-perez-matos -date: 2025-09-05 +date: 2025-08-29 place: The basement city: Jacareí country: BR @@ -17,7 +17,7 @@ gallery: [ # A New Son for Jacareí: The Tribute to Dr. José Benjamín Pérez Matos -*Jacareí, Brazil – September 5, 2025* +*Jacareí, Brazil – August 29, 2025* The city of Jacareí, in the state of São Paulo, Brazil, woke up with a different atmosphere, as if its streets—dressed in history, trees and palm trees—knew that someone special was coming to wander them, not as a tourist, but as a future adopted son. diff --git a/src/content/news/en/2025-08-17-1.md b/src/content/news/en/2025-09-17.md similarity index 99% rename from src/content/news/en/2025-08-17-1.md rename to src/content/news/en/2025-09-17.md index bc02657..bc4c9e4 100644 --- a/src/content/news/en/2025-08-17-1.md +++ b/src/content/news/en/2025-09-17.md @@ -1,7 +1,7 @@ --- locale: en title: 'Gaza Under the Magnifying Glass: Media Manipulation and Judgment Warning for Nations that Oppose Israel' -date: 2025-08-17 +date: 2025-09-17 slug: 2025-08-17-gaza-under-the-magnifying-glass-media-manipulation-and-judgment-warning-for-nations-that-oppose-israel place: '' thumbnail: 'https://ik.imagekit.io/crpy/tr:w-1280/comunicado-1.webp' diff --git a/src/layouts/MainLayout.astro b/src/layouts/MainLayout.astro index 1edcab3..432452b 100644 --- a/src/layouts/MainLayout.astro +++ b/src/layouts/MainLayout.astro @@ -8,7 +8,7 @@ import "@fontsource/poppins/700.css"; import "@fontsource-variable/kameron"; import ShareSticky from "../components/ShareSticky.vue"; import { routeTranslations } from "../i18n"; -const { title, description, image, url, date } = Astro.props; +const { title, description, image, url, date, noindex } = Astro.props; const currentLocale = Astro.currentLocale ?? "es"; const direction = currentLocale === "he" ? "rtl" : "ltr"; @@ -28,6 +28,7 @@ const isNewsPage = contentSegments.some((segment) => image={image} url={url} date={date} + noindex={noindex} /> + diff --git a/src/pages/api/lib/googleSheets.ts b/src/pages/api/lib/googleSheets.ts index 972826a..dcf8271 100644 --- a/src/pages/api/lib/googleSheets.ts +++ b/src/pages/api/lib/googleSheets.ts @@ -37,6 +37,17 @@ export async function emailExists(email: string): Promise { } +export async function getVolunteerCount(): Promise { + const result = await sheets.spreadsheets.values.get({ + spreadsheetId: SPREADSHEET_ID, + range: 'VOLUNTARIOS!B2:B', // columna nombre_completo, se llena en cada registro + valueRenderOption: 'UNFORMATTED_VALUE', + }); + + const rows = result.data.values || []; + return rows.filter((row) => row[0] !== undefined && row[0] !== '').length; +} + export async function appendToSheet(values: any[]) { try { await sheets.spreadsheets.values.append({ diff --git a/src/pages/api/voluntarios/count.ts b/src/pages/api/voluntarios/count.ts new file mode 100644 index 0000000..4cc10b3 --- /dev/null +++ b/src/pages/api/voluntarios/count.ts @@ -0,0 +1,21 @@ +import type { APIRoute } from "astro"; +import { getVolunteerCount } from "../lib/googleSheets"; + +export const prerender = false; + +export const GET: APIRoute = async () => { + try { + const count = await getVolunteerCount(); + + return Response.json( + { success: true, count }, + { headers: { "Cache-Control": "no-store" } } + ); + } catch (error) { + console.error("Error en /api/voluntarios/count:", error); + return Response.json( + { success: false, message: "Error al obtener el contador de voluntarios" }, + { status: 500 } + ); + } +};