From 522cdb160ab8e1bdbb00e4ff8078c885be0b9aed Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 22 Sep 2026 13:32:28 -0700 Subject: [PATCH 1/2] Improve ARK site accessibility --- .gitignore | 2 + Gemfile.lock | 1 + _brand/includes/content/anatomy2.html | 10 - _brand/includes/content/anatomy2.txt | 8 + _brand/includes/content/anatomy3.html | 16 - _brand/includes/content/anatomy3.txt | 15 + _brand/includes/content/anatomy4.txt | 6 + _brand/includes/content/ascii_art.html | 39 + _brand/includes/content/fig.html | 41 + _brand/includes/content/image.html | 4 - _brand/includes/content/owl_bike_key.txt | 24 + .../content/pid-comparison-table.html | 17 + _brand/includes/content/section.html | 21 + _brand/includes/content/side-by-side.html | 44 + _brand/includes/content/sitemap-list.html | 2 +- _brand/includes/footer/footer.html | 21 +- _brand/includes/footer/social.html | 6 +- _brand/includes/head/color-scheme.script.html | 22 + _brand/includes/header/callout.html | 7 + _brand/includes/header/header.html | 37 +- _brand/includes/navigation/breadcrumbs.html | 36 + _brand/includes/navigation/top.html | 93 +- _brand/layouts/default.html | 46 +- _brand/layouts/post.html | 4 +- _brand/layouts/posts.html | 65 +- _brand/sass/_utils.scss | 4 + _brand/sass/ark.scss | 451 +- _config.yml | 24 +- _data/navigation.yml | 2 +- _data/organization_map.json | 6772 +++++++++++++++++ assets/css/ark-organizations.css | 208 + assets/images/posts/arka_blog_default.png | Bin 0 -> 57606 bytes assets/images/share/ark-anatomy-es.svg | 42 + assets/images/share/ark-anatomy-fr.svg | 42 + assets/images/share/ark-anatomy.svg | 57 + .../images/share/durable-identifier-key.svg | 48 + .../share/learn_spt_in_action_static.svg | 18 + assets/js/ark-organizations.js | 406 + content/_pages/404.md | 5 +- .../about-ark-community-code-of-conduct.md | 12 +- content/_pages/about-ark-faq-en.md | 140 +- content/_pages/about-ark-faq-es.md | 254 +- content/_pages/about-ark-faq-fr.md | 252 +- content/_pages/about-ark-features.md | 8 + content/_pages/about-ark-naans-and-systems.md | 203 +- content/_pages/about-ark-namespaces.md | 14 +- content/_pages/about-ark-overview.md | 80 +- content/_pages/about-ark-shoulders-faq-en.md | 18 +- .../_pages/about-ark-suffix-passthrough.md | 56 +- content/_pages/about-ark-training.md | 4 + content/_pages/about-best-practices.md | 4 + ...ut-comparing-arks-and-other-identifiers.md | 17 +- ...out-identifier-concepts-and-conventions.md | 101 +- content/_pages/about-n2t-global-resolver.md | 26 +- .../about-running-minters-and-resolvers.md | 24 +- content/_pages/about-shoulders.md | 19 +- content/_pages/about-testing-arks.md | 11 +- content/_pages/about-the-ark-origin-story.md | 29 +- content/_pages/about.md | 53 +- content/_pages/accessibility.md | 25 + content/_pages/blog-post-template.md | 4 + content/_pages/calendar.md | 6 +- content/_pages/community-ark-organizations.md | 144 + .../community-ark-summit-experts-meetings.md | 22 +- content/_pages/community-groups.md | 63 +- .../_pages/community-organization-map-list.md | 40 + content/_pages/community.md | 105 +- content/_pages/contact-us.md | 4 + content/_pages/index.md | 43 +- content/_pages/maintenance.md | 9 +- content/_pages/naan-stats.md | 396 - content/_pages/privacy-policy.md | 8 +- content/_pages/resources-noid.md | 20 +- .../_pages/{specs.md => resources-specs.md} | 26 +- content/_pages/resources.md | 86 +- content/_pages/sitemap.md | 4 + ...ting-getting-started-implementing-arks.md} | 11 +- ...se-arks-and-igsns-with-physical-objects.md | 14 +- ...tent-myths-about-persistent-identifiers.md | 3 +- .../_posts/2021-01-20-new-service-arketype.md | 3 +- .../2021-01-26-announcing-the-ark-alliance.md | 5 +- ...collection-goes-online-with-483000-arks.md | 4 +- ...ark-plugin-for-open-journal-systems-ojs.md | 5 +- content/_posts/2021-10-05-community-update.md | 3 +- .../_posts/2021-11-01-the-ark-origin-story.md | 8 +- .../_posts/2021-11-03-arks-at-ipres-2021.md | 4 +- ...-12-08-the-frick-collection-to-use-arks.md | 8 +- .../2021-12-16-ark-alliance-2021-wrap-up.md | 6 +- content/_posts/2022-02-22-community-update.md | 3 +- ...iversity-of-toronto-scarborough-library.md | 16 +- ...mages-and-the-promise-of-arks-with-iiif.md | 62 +- ...p-2022-with-over-1000-ark-organizations.md | 19 +- ...s-added-to-new-version-of-the-pid-guide.md | 3 +- ...-cultural-heritage-data-more-persistent.md | 4 +- ...date-stickers-tutorials-code-of-conduct.md | 3 +- ...ing-up-2023-with-1200-ark-organizations.md | 17 +- ...24-11-04-ark-community-highlight-wacren.md | 5 +- ...community-update-1400-ark-organizations.md | 8 +- ...1-arklet-frick-ark-minter-resolver-tool.md | 4 +- ...-data-at-the-national-library-of-france.md | 8 +- ...tion-change-from-classic-to-modern-arks.md | 4 +- ...-12-ioi-supports-la-referencia-and-dark.md | 3 +- ...ing-up-2025-with-1720-ark-organizations.md | 13 +- scripts/check_accessibility.rb | 119 + scripts/check_accessibility_interactions.cjs | 171 + scripts/check_browser_accessibility.cjs | 87 + scripts/check_organization_data.cjs | 39 + scripts/update_organization_map.py | 53 + 108 files changed, 10500 insertions(+), 1211 deletions(-) delete mode 100644 _brand/includes/content/anatomy2.html create mode 100644 _brand/includes/content/anatomy2.txt delete mode 100644 _brand/includes/content/anatomy3.html create mode 100644 _brand/includes/content/anatomy3.txt create mode 100644 _brand/includes/content/anatomy4.txt create mode 100644 _brand/includes/content/ascii_art.html create mode 100644 _brand/includes/content/fig.html delete mode 100644 _brand/includes/content/image.html create mode 100644 _brand/includes/content/owl_bike_key.txt create mode 100644 _brand/includes/content/pid-comparison-table.html create mode 100644 _brand/includes/content/section.html create mode 100644 _brand/includes/content/side-by-side.html create mode 100644 _brand/includes/header/callout.html create mode 100644 _brand/includes/navigation/breadcrumbs.html create mode 100644 _data/organization_map.json create mode 100644 assets/css/ark-organizations.css create mode 100644 assets/images/posts/arka_blog_default.png create mode 100644 assets/images/share/ark-anatomy-es.svg create mode 100644 assets/images/share/ark-anatomy-fr.svg create mode 100644 assets/images/share/ark-anatomy.svg create mode 100644 assets/images/share/durable-identifier-key.svg create mode 100644 assets/images/share/learn_spt_in_action_static.svg create mode 100644 assets/js/ark-organizations.js create mode 100644 content/_pages/accessibility.md create mode 100644 content/_pages/community-ark-organizations.md create mode 100644 content/_pages/community-organization-map-list.md delete mode 100644 content/_pages/naan-stats.md rename content/_pages/{specs.md => resources-specs.md} (50%) rename content/_pages/{about-getting-started-implementing-arks.md => starting-getting-started-implementing-arks.md} (93%) create mode 100644 scripts/check_accessibility.rb create mode 100644 scripts/check_accessibility_interactions.cjs create mode 100644 scripts/check_browser_accessibility.cjs create mode 100644 scripts/check_organization_data.cjs create mode 100644 scripts/update_organization_map.py diff --git a/.gitignore b/.gitignore index f9e9b93..8207146 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ _site vendor/ .bundle/ **/.DS_Store +__pycache__/ +docs/ diff --git a/Gemfile.lock b/Gemfile.lock index 1647de6..e4d8e87 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -255,6 +255,7 @@ GEM PLATFORMS arm64-darwin-22 + arm64-darwin-24 x86_64-darwin-23 x86_64-linux diff --git a/_brand/includes/content/anatomy2.html b/_brand/includes/content/anatomy2.html deleted file mode 100644 index b1a9122..0000000 --- a/_brand/includes/content/anatomy2.html +++ /dev/null @@ -1,10 +0,0 @@ - https://example.org/ark:12345/x54xz321/s3/f8.05v.tiff - \_________________/ \__/\___/ \______/\____/\_______/ - | | | | | | - | ARK Label | | Sub-parts Variants - | | | - Name Mapping Authority (NMA) | Assigned Name - | - Name Assigning Authority Number (NAAN) -{: .bg-secondary-subtle } - diff --git a/_brand/includes/content/anatomy2.txt b/_brand/includes/content/anatomy2.txt new file mode 100644 index 0000000..d520d76 --- /dev/null +++ b/_brand/includes/content/anatomy2.txt @@ -0,0 +1,8 @@ + https://example.org/ark:12345/x54xz321/s3/f8.05v.tiff + \_________________/ \__/\___/ \______/\____/\_______/ + | | | | | | + | ARK Label | | Sub-parts Variants + | | | + Name Mapping Authority (NMA) | Assigned Name + | + Name Assigning Authority Number (NAAN) diff --git a/_brand/includes/content/anatomy3.html b/_brand/includes/content/anatomy3.html deleted file mode 100644 index 435f524..0000000 --- a/_brand/includes/content/anatomy3.html +++ /dev/null @@ -1,16 +0,0 @@ - ARK ANATOMY -   Compact ARK - _______________________________ -                     /                     \ -   Resolver Service   Base Object Name  Qualifiers - __________________  ________________  _____________ -   /                  \/        ...     \/             \ -   https://example.org/ark:12345/x54xz321/s3/f8.05v.tiff -   \_________/ \__/\___/ \______/\____/\_______/ -              |         |   |  ...  |     |       | -              |  ARK Label  |   |   | Sub-parts  Variants -              |            |   |   | - Name Mapping Authority (NMA) |   |  Assigned Name     ... -                             |   +---------- Shoulder: /x5 -     Name Assigning Authority Number (NAAN) ... -{: .bg-secondary-subtle } diff --git a/_brand/includes/content/anatomy3.txt b/_brand/includes/content/anatomy3.txt new file mode 100644 index 0000000..a5a6d56 --- /dev/null +++ b/_brand/includes/content/anatomy3.txt @@ -0,0 +1,15 @@ + ARK ANATOMY +   Compact ARK + _______________________________ +                     /                     \ +   Resolver Service   Base Object Name  Qualifiers + __________________  ________________  _____________ +   /                  \/        ...     \/             \ +   https://example.org/ark:12345/x54xz321/s3/f8.05v.tiff +   \_________/ \__/\___/ \______/\____/\_______/ +              |         |   |  ...  |     |       | +              |  ARK Label  |   |   | Sub-parts  Variants +              |            |   |   | + Name Mapping Authority (NMA) |   |  Assigned Name     ... +                             |   +---------- Shoulder: /x5 +     Name Assigning Authority Number (NAAN) ... diff --git a/_brand/includes/content/anatomy4.txt b/_brand/includes/content/anatomy4.txt new file mode 100644 index 0000000..34ce1f5 --- /dev/null +++ b/_brand/includes/content/anatomy4.txt @@ -0,0 +1,6 @@ + Resolver Service Compact ARK + __________________ _______________________________ + / \/ \ + https://example.org/ark:/12345/x6np1wh8k/c3/s5.v7.xsl + \____________________________/\________/\___________/ + Prefixes Base Name Suffixes diff --git a/_brand/includes/content/ascii_art.html b/_brand/includes/content/ascii_art.html new file mode 100644 index 0000000..07c436f --- /dev/null +++ b/_brand/includes/content/ascii_art.html @@ -0,0 +1,39 @@ +{% comment %} + Usage: + {% include content/ascii_art.html url="/assets/images/aart.txt" description="This is an ASCII art image." link="https://example.com" nocaption=true %} +{% endcomment %} + +{%- assign width = include.width | default: "100%" -%} +{%- assign label = include.label | default: "Text diagram" -%} +{% if include.nocaption == nil %} +
+{% else %} +
+{% endif %} + + {% if include.link != nil %} + + {% endif %} + +
+      {%- include {{ include.url }} -%}
+    
+ + {% if include.link != nil %} +
+ {% endif %} + + {% if include.nocaption == nil %} +
+ {{ include.description | markdownify }} +
+ {% endif %} + +{% if include.nocaption == nil %} +
+{% else %} + +{% endif %} diff --git a/_brand/includes/content/fig.html b/_brand/includes/content/fig.html new file mode 100644 index 0000000..47ada0c --- /dev/null +++ b/_brand/includes/content/fig.html @@ -0,0 +1,41 @@ +{% comment %} + Usage: + {% include content/fig.html url="/assets/images/example.jpg" alt="A concise image description." description="This is an example image." label="Example image" link="https://example.com" nocaption=true %} + If no alt text is provided, tries to use the first sentence of description. +{% endcomment %} + +{% if include.nocaption == nil %} +
+{% else %} +
+{% endif %} + + {%- assign width = include.width | default: "100%" -%} + {%- if include.alt != nil -%} + {%- assign alt = include.alt -%} + {%- else -%} + {%- assign alt = include.description | default: "" | strip_html | split: ". " | first -%} + {%- endif -%} + {% if include.link != nil %} + + {% endif %} + + {{ alt | escape }} + + {% if include.link != nil %} + + {% endif %} + + {% if include.nocaption == nil %} +
+ {{ include.description | markdownify | remove: '

' | remove: '

' }} +
+ {% endif %} + +{% if include.nocaption == nil %} +
+{% else %} + +{% endif %} diff --git a/_brand/includes/content/image.html b/_brand/includes/content/image.html deleted file mode 100644 index abad65b..0000000 --- a/_brand/includes/content/image.html +++ /dev/null @@ -1,4 +0,0 @@ -
- {{ include.description }} -
{{ include.description }}
-
diff --git a/_brand/includes/content/owl_bike_key.txt b/_brand/includes/content/owl_bike_key.txt new file mode 100644 index 0000000..6bdb002 --- /dev/null +++ b/_brand/includes/content/owl_bike_key.txt @@ -0,0 +1,24 @@ + _____ slips on _____ + .-' ,_,'-.. ----> .-' '-. + / (o,o) \\ / \ + : {`"'} || : `____ + / .-. -"-"- || / .-. '--^. .^--^. .^. + { ( ) || { ( ) `-' `-^--^-' '--^. + \ `-' _o || \ '-' ===================================} + : _|<,_ || : __________________________________/ + \ (*)/(*) / \ / + `-._____.-' `-._____.-' + |....................|...............|....|..........................|..| + ^ ^ ^ ^ ^ + : : : : : + Cover= Bow= Shoulder .------ Blade Tip + NMA Scheme+NAAN : : .-------------------' + : : : : : : + v v v v v v + |..........................|....+.....|...|......|.| + https://OwlBike.example.org/ark:13030/tqb3kh97gh8w <---- Example Key + doi:10.30/tqb3kh97gh8w with parallel + hdl:13030/tqb3kh97gh8w parts in other + urn:13030:tqb3kh97gh8w id schemes. + |..........................|.......................|.... + Name Mapping Authority Base object name ... diff --git a/_brand/includes/content/pid-comparison-table.html b/_brand/includes/content/pid-comparison-table.html new file mode 100644 index 0000000..3ec0d59 --- /dev/null +++ b/_brand/includes/content/pid-comparison-table.html @@ -0,0 +1,17 @@ +
+ + + + + + + + + + + + + + +
Capabilities defined for five types of persistent identifier in the original comparison.
Major causes of broken links, and some featuresPURLHandleURNDOIARK
Prevents fire, war, flood, attack, bankruptcy, ...NoNoNoNoNo
Prevents human errorNoNoNoNoNo
Guarantees your links, or fixes them for youNoNoNoNoNo
Decentralized admin plus inferenceable syntaxNoNoNoNoYes
Flexible metadata and persistence statementsNoNoNoNoYes
Identifiers extensible during resolutionYesNoYesNoYes
Free, non-paywalled, in unlimited numbersYesNoYesNoYes
+
diff --git a/_brand/includes/content/section.html b/_brand/includes/content/section.html new file mode 100644 index 0000000..4d5359a --- /dev/null +++ b/_brand/includes/content/section.html @@ -0,0 +1,21 @@ +{% comment %} + Start, change, or end a section. Arguments: + - do: "start", "end", or "changeto" + - color: "warm" (default) or "cool" + + Usage: + include content/section.html do="start" color="main" + include content/section.html do="changeto" color="cool" + include content/section.html do="end" + + Surrounding blank lines and no indentation to protect markdown content. +{% endcomment %} + +{% if include.do == "end" or include.do == "changeto" %} + + +{% endif %} +{% if include.do == "start" or include.do == "changeto" %} +
+
+{% endif %} diff --git a/_brand/includes/content/side-by-side.html b/_brand/includes/content/side-by-side.html new file mode 100644 index 0000000..c95995f --- /dev/null +++ b/_brand/includes/content/side-by-side.html @@ -0,0 +1,44 @@ +{% comment %} + + Usage: Use capture to get formatted markdown, for example (without { and }), + % capture my_text % + ### Project Details + This section contains a complex list: + * **Timeline**: 4 weeks + * **Tools**: Jekyll, Liquid + * **Goal**: Responsive layout + + Can have [multiple paragraphs](https://jekyllrb.com) and links here. + % endcapture % + Then use the side-by-side include with same arguments as fig include, eg, + url="/assets/images/example.jpg" + description="This is an example image." + link="https://example.com" + nocaption=true + plus the content and an optional reverse flag: + content=my_text + reverse=true + For example (args must all be on one line): + {% include content/side-by-side.html content=my_text reverse=true url="..." description="..." nocaption=true %} + +{% endcomment %} + +{%- assign direction = "row" -%} +{%- if include.reverse -%} + {%- assign direction = "row-reverse" -%} +{%- endif -%} +
+ +
+ {{ include.content }} +
+ +
+ {%- assign url = include.url -%} + {%- assign description = include.description -%} + {%- assign link = include.link | default: nil -%} + {%- assign nocaption = include.nocaption | default: "1" -%} + {% include content/fig.html url=url description=description link=link nocaption=nocaption %} +
+
diff --git a/_brand/includes/content/sitemap-list.html b/_brand/includes/content/sitemap-list.html index 1ad542b..1b15a66 100644 --- a/_brand/includes/content/sitemap-list.html +++ b/_brand/includes/content/sitemap-list.html @@ -8,7 +8,7 @@

Pages

{% for page in sorted_pages %} {% if page.title and page.permalink != "/404.html" %}
  • - + {{ page.title }}
  • diff --git a/_brand/includes/footer/footer.html b/_brand/includes/footer/footer.html index 3b79cc3..1989851 100644 --- a/_brand/includes/footer/footer.html +++ b/_brand/includes/footer/footer.html @@ -1,23 +1,28 @@ -