diff --git a/.github/workflows/validate-site.yml b/.github/workflows/validate-site.yml new file mode 100644 index 0000000..1659c62 --- /dev/null +++ b/.github/workflows/validate-site.yml @@ -0,0 +1,20 @@ +name: Validate site data + +on: + pull_request: + push: + branches: [master] + +permissions: + contents: read + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Validate CSV and asset contracts + run: python scripts/validate_site.py \ No newline at end of file diff --git a/MAINTAINER_CHECKLIST.md b/MAINTAINER_CHECKLIST.md new file mode 100644 index 0000000..cadc66b --- /dev/null +++ b/MAINTAINER_CHECKLIST.md @@ -0,0 +1,29 @@ +# VICE Lab Website Maintainer Checklist + +## Photos requiring human follow-up + +Before adding a portrait, confirm the subject approves its use and that VICE Lab has permission to publish it. Use a square or portrait-oriented JPEG, crop consistently with existing headshots, optimize it for the web, and use the exact filename shown. + +- [ ] Obtain an approved portrait for Erin Hestir and save it as `images/people/erin-hestir.jpg`. +- [ ] Obtain an approved portrait for Aditya Sood and save it as `images/people/aditya-sood.jpg` (used by the Sierra HP and CERC-WET projects). +- [ ] Obtain an approved portrait for Megan Mayzelle and save it as `images/people/megan-mayzelle.jpg`. +- [ ] Confirm that `images/people/josue-medellin-azuara.jpg` is the intended current portrait for the Water Systems Management collaborator card. +- [ ] Review collaborator names and affiliations against their official lab pages at least annually. + +Until these photographs are supplied, the site displays `images/people/no-picture.jpg` instead of a broken image. + +## Content decisions + +- [ ] Decide whether the 2021 Community Survey page should be updated, archived, or removed; it still promises a June 2021 report. +- [ ] Update the footer's “Updated October 2020” wording or replace it with an automatically maintained copyright year. +- [ ] Review and update remaining plain-HTTP external links. +- [ ] Confirm whether the archived PPIC site snapshot should remain publicly deployed under `archived-sites/`. +- [ ] Review people referenced by projects, news, and publications but absent from `people.csv`; either add profiles or intentionally render their names without profile links. + +## Technical follow-up + +- [ ] Upgrade the bundled jQuery 3.3.1 to a supported release and regression-test CSV rendering, menus, filters, and modals. +- [ ] Compress `images/news/casa-ele-2022-launched.jpg` (currently about 21.7 MB) and other multi-megabyte images; target less than 500 KB where practical. +- [ ] Confirm whether the unused `images/news/IMG_0383.png` can be removed. +- [ ] Add a periodic external-link checker after redirects and intentionally archived links are documented. +- [ ] Run `python scripts/validate_site.py` before every content pull request and resolve all errors; review warnings explicitly. \ No newline at end of file diff --git a/collaborators/index.html b/collaborators/index.html index 4bcecea..7c075d1 100644 --- a/collaborators/index.html +++ b/collaborators/index.html @@ -121,7 +121,8 @@

default: people_data= ''; if (data[i].AUTHOR != "") { - people_data = '
' + data[i].AUTHOR.replace("-", " ") + '
' + var authorImage = data[i].AUTHOR === "josue-medellin" ? "josue-medellin-azuara" : data[i].AUTHOR; + people_data = '
' + data[i].AUTHOR.replaceAll("-", " ") + '' + data[i].NAME + ' collaborator portrait
' } $("#collaborators").append( $.parseHTML( @@ -130,6 +131,8 @@

break; } } + }).fail(function () { + $("#collaborators").append("

Unable to load collaborators right now. Please try again later.

"); }); /*Footer: Controlled by HTML snippet in snippets/footer.html*/ $("#footer").load("../snippets/footer.html"); diff --git a/images/news/USDA-SWF-on-NPR.jpg b/images/news/usda-swf-on-npr.jpg similarity index 100% rename from images/news/USDA-SWF-on-NPR.jpg rename to images/news/usda-swf-on-npr.jpg diff --git a/images/projects/cosumnes.jpg b/images/projects/Cosumnes.jpg similarity index 100% rename from images/projects/cosumnes.jpg rename to images/projects/Cosumnes.jpg diff --git a/index.html b/index.html index 01e9dd8..7c886b3 100644 --- a/index.html +++ b/index.html @@ -164,7 +164,7 @@

$.get("/news.csv").then(function (text, status, xhr) { var data = $.csv.toObjects(text); - for (var i = 0; i < NUMBER_FRONT_PAGE_NEWS; i++) { + for (var i = 0; i < Math.min(NUMBER_FRONT_PAGE_NEWS, data.length); i++) { switch (data[i].ID) { default: $("#news").append( @@ -172,22 +172,24 @@

'
' + '
' + '' + '
' + - '' + - '' + data[i].AUTHOR.replace("-", " ") + '' + + '' + + '' + data[i].AUTHOR.replaceAll("-", " ") + '' + data[i].AUTHOR.replaceAll(' + '
'+ '
' + '
' + - '' + + '' + data[i].NAME + '' + '

' + data[i].TEXT + '

' + - '
' + + '' + '
' )); break; } } + }).fail(function () { + $("#news").append("

Unable to load news right now. Please try again later.

"); }); $.get("/projects.csv").then(function (text, status, xhr) { var data = $.csv.toObjects(text); @@ -200,11 +202,13 @@

break; default: $("#projects").append( - $.parseHTML('

' + data[i].NAME + '

' + $.parseHTML('

' + data[i].NAME + '

' + data[i].AUTHOR.split(
' + data[i].NAME + '
' )); break; } } + }).fail(function () { + $("#projects").append("

Unable to load projects right now. Please try again later.

"); }); }); diff --git a/news/index.html b/news/index.html index cf2f100..5644276 100644 --- a/news/index.html +++ b/news/index.html @@ -121,20 +121,22 @@

'
' + '
' + '
' + - '

' + data[i].NAME + '

' + + '

' + data[i].NAME + '

' + '
' + '
' + - '' + - '' + data[i].AUTHOR.replace("-", " ") + '' + + '' + + '' + data[i].AUTHOR.replaceAll("-", " ") + '' + data[i].AUTHOR.replaceAll(' + '
'+ '
' + '
' + - '' + + '' + data[i].NAME + '' + '

' + data[i].TEXT + '

' + - '
' + + '' + '
' )); } + }).fail(function () { + $("#news").append("

Unable to load news right now. Please try again later.

"); }); /*Footer: Controlled by HTML snippet in snippets/footer.html*/ $("#footer").load("../snippets/footer.html"); diff --git a/people/index.html b/people/index.html index 009c2a7..c2a0e7c 100644 --- a/people/index.html +++ b/people/index.html @@ -120,7 +120,7 @@