From ce7f40b1a6a7cc6173c3d106279dcf9abfecc728 Mon Sep 17 00:00:00 2001
From: zrei <88964793+zrei@users.noreply.github.com>
Date: Sat, 25 Jul 2026 16:38:26 +0800
Subject: [PATCH 1/4] AO3-7515 Move html files to html erb files
---
app/controllers/help_controller.rb | 3 +++
app/views/collections/_form.html.erb | 6 +++---
app/views/help/collections_name.html.erb | 4 ++++
app/views/help/icon_alt_text.html.erb | 5 +++++
app/views/help/icon_comment_text.html.erb | 3 +++
app/views/pseuds/_pseuds_form.html.erb | 4 ++--
config/locales/views/en.yml | 17 +++++++++++++++++
config/routes.rb | 3 +++
public/help/collection-name.html | 9 ---------
public/help/icon-alt-text.html | 10 ----------
public/help/pseud-icon-comment.html | 1 -
11 files changed, 40 insertions(+), 25 deletions(-)
create mode 100644 app/views/help/collections_name.html.erb
create mode 100644 app/views/help/icon_alt_text.html.erb
create mode 100644 app/views/help/icon_comment_text.html.erb
delete mode 100644 public/help/collection-name.html
delete mode 100644 public/help/icon-alt-text.html
delete mode 100644 public/help/pseud-icon-comment.html
diff --git a/app/controllers/help_controller.rb b/app/controllers/help_controller.rb
index 5fc0b0a28c1..6530611508d 100644
--- a/app/controllers/help_controller.rb
+++ b/app/controllers/help_controller.rb
@@ -1,8 +1,11 @@
class HelpController < ApplicationController
HELP_ACTIONS = %i[
collectibles_add_to_collection
+ collections_name
first_login
html
+ icon_alt_text
+ icon_comment_text
preferences_collection
preferences_comment
preferences_display
diff --git a/app/views/collections/_form.html.erb b/app/views/collections/_form.html.erb
index 1f372b588d6..6faaa0c955a 100644
--- a/app/views/collections/_form.html.erb
+++ b/app/views/collections/_form.html.erb
@@ -18,7 +18,7 @@
<%= collection_form.label :name, ts("Collection name" + "*") %>
- <%= link_to_help "collection-name" %>
+ <%= link_to_help_modal(help_collections_name_path, t(".collections_name_help_title")) %>
<%= collection_form.text_field :name, "aria-describedby" => "name-field-notes" %>
@@ -87,7 +87,7 @@
<%= collection_form.label :icon_alt_text, ts("Icon alt text") %>
- <%= link_to_help "icon-alt-text" %>
+ <%= link_to_help_modal(help_icon_alt_text_path, t(".icon_alt_text_help_title")) %>
<%= collection_form.text_field :icon_alt_text, class: "observe_textlength" %>
@@ -96,7 +96,7 @@
<%= collection_form.label :icon_comment_text, ts("Icon comment text") %>
- <%= link_to_help "pseud-icon-comment" %>
+ <%= link_to_help_modal(help_icon_comment_text_path, t(".icon_comment_text_help_title")) %>
<%= collection_form.text_field :icon_comment_text, class: "observe_textlength" %>
diff --git a/app/views/help/collections_name.html.erb b/app/views/help/collections_name.html.erb
new file mode 100644
index 00000000000..1a14103baff
--- /dev/null
+++ b/app/views/help/collections_name.html.erb
@@ -0,0 +1,4 @@
+<%= t(".page_heading") %>
+
+<%= t(".changing_collection_name") %>
+<%= t(".collection_name_rules") %>
diff --git a/app/views/help/icon_alt_text.html.erb b/app/views/help/icon_alt_text.html.erb
new file mode 100644
index 00000000000..3ef06f4b0ae
--- /dev/null
+++ b/app/views/help/icon_alt_text.html.erb
@@ -0,0 +1,5 @@
+<%= t(".page_heading") %>
+
+<%= t(".alt_text_explanation") %>
+
+<%= t(".alt_text_example") %>
diff --git a/app/views/help/icon_comment_text.html.erb b/app/views/help/icon_comment_text.html.erb
new file mode 100644
index 00000000000..abfb0b7f3fd
--- /dev/null
+++ b/app/views/help/icon_comment_text.html.erb
@@ -0,0 +1,3 @@
+<%= t(".page_heading") %>
+
+<%= t(".description") %>
\ No newline at end of file
diff --git a/app/views/pseuds/_pseuds_form.html.erb b/app/views/pseuds/_pseuds_form.html.erb
index ff4c5743db7..c9da35a04fc 100644
--- a/app/views/pseuds/_pseuds_form.html.erb
+++ b/app/views/pseuds/_pseuds_form.html.erb
@@ -42,7 +42,7 @@
<%= f.label :icon_alt_text, t(".icon_alt") %>
- <%= link_to_help "icon-alt-text" %>
+ <%= link_to_help_modal(help_icon_alt_text_path, t(".icon_alt_text_help_title")) %>
<%= f.text_field :icon_alt_text, class: "observe_textlength", disabled: logged_in_as_admin? %>
@@ -51,7 +51,7 @@
<%= f.label :icon_comment_text, t(".icon_comment") %>
- <%= link_to_help("pseud-icon-comment") %>
+ <%= link_to_help_modal(help_icon_comment_text_path, t(".icon_comment_text_help_title")) %>
<%= f.text_field :icon_comment_text, class: "observe_textlength", disabled: logged_in_as_admin? %>
diff --git a/config/locales/views/en.yml b/config/locales/views/en.yml
index a93ff354ba4..1a6bd25f64b 100644
--- a/config/locales/views/en.yml
+++ b/config/locales/views/en.yml
@@ -858,11 +858,14 @@ en:
no_challenge: No Challenge
prompt_meme: Prompt Meme Challenge
form:
+ collections_name_help_title: Collection name help
header_image_url:
footnote: PNG, JPEG, GIF
label: Custom header URL
icon:
delete: Delete collection icon and revert to our default. This will also remove the icon alt text and comment text.
+ icon_alt_text_help_title: Icon alt text help
+ icon_comment_text_help_title: Icon comment text help
multifandom:
footnote: Use this if your collection is not fandom-specific.
label: Multifandom
@@ -1212,6 +1215,10 @@ en:
moderated_and_anonymous_collections: 'Also note: if the collection you are submitting to is moderated, and you aren''t a member, your story will not be added to the collection automatically - it will have to be approved by one of the collection''s moderators. If this is an anonymous and/or unrevealed collection your work will be anonymous and/or hidden as soon as you post it, including while it''s waiting for approval. If your work is rejected, it will remain anonymous and/or unrevealed until you edit it to remove it from the collection or until the moderator removes it.'
page_heading: Adding To Collections
removing_from_collection: If you change your mind about having an item in a collection, you can either edit the list of collections when editing it, or you can manage all your collected items under the "My Collections" page in your account.
+ collections_name:
+ collection_name_rules: The name can consist only of ASCII letters (a-z, A-Z), numbers and underscores, and cannot contain spaces.
+ changing_collection_name: The name of the collection can be changed at a later point, but that will break links to the collection.
+ page_heading: Collection Name
first_login:
additional_info:
header: Additional Browsing Information
@@ -1349,6 +1356,14 @@ en:
unwanted_larger_text: If one bit of your text shows up larger than the rest, probably our formatter couldn't figure out to put paragraph tags around it. You can fix this by manually putting in the paragraph tags around that one bit.
unwilling_to_break: If you have put in some custom HTML (eg a list of items inside a ) and you don't want break tags or paragraphs inserted, just put it all on one line (sorry, this is the inconvenient tradeoff for automatically doing the paragraph/break tags).
page_heading: HTML on the Archive
+ icon_alt_text:
+ alt_text_example: >
+ For example, the AO3 logo has the following alt text: "Archive of Our Own".
+ alt_text_explanation: The purpose of alt text is to explain the meaning of an image if the image isn't showing. This is used by people browsing with images turned off, or visually impaired people using screenreader technology. Please do not use alt text for attribution!
+ page_heading: Icon Alt Text
+ icon_comment_text:
+ description: You can put anything extra you have about your icon here, like credit for the maker of the icon.
+ page_heading: Icon Comment Text
preferences_collection:
allow_collection_invitation:
changing: Changing this setting won't affect any existing works in collections.
@@ -2874,7 +2889,9 @@ en:
description: Description
icon: Icon
icon_alt: Icon alt text
+ icon_alt_text_help_title: Icon alt text help
icon_comment: Icon comment text
+ icon_comment_text_help_title: Icon comment text help
icon_delete: Delete your icon and revert to our default. This will also remove your icon alt text and comment text.
icon_notes:
current: This is your icon.
diff --git a/config/routes.rb b/config/routes.rb
index 0d145b1826c..584f28fd191 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -691,6 +691,9 @@
get "/help/choosing-series.html", to: redirect("/help/works_series")
get "/help/work-skins.html", to: redirect("/help/works_skins")
get "/help/translation-link.html", to: redirect("/help/works_translation_link")
+ get "help/pseud-icon-comment.html", to: redirect("help/icon_comment_text")
+ get "help/collection-name.html", to: redirect("help/collections_name")
+ get "help/icon-alt-text.html", to: redirect("help/icon_alt_text")
get 'search' => 'works#search'
post 'support' => 'feedbacks#create', as: 'feedbacks'
diff --git a/public/help/collection-name.html b/public/help/collection-name.html
deleted file mode 100644
index 52bb72f0ed9..00000000000
--- a/public/help/collection-name.html
+++ /dev/null
@@ -1,9 +0,0 @@
-Collection Name
-
-
- The name of the collection can be changed at a later point, but that will break links to the collection.
-
-
- The name can consist only of ASCII letters (a-z, A-Z), numbers and underscores, and cannot contain spaces.
-
-
\ No newline at end of file
diff --git a/public/help/icon-alt-text.html b/public/help/icon-alt-text.html
deleted file mode 100644
index cc2a0e49376..00000000000
--- a/public/help/icon-alt-text.html
+++ /dev/null
@@ -1,10 +0,0 @@
-Icon Alt Text
-
-
- The purpose of alt text is to explain the meaning of an image if the image isn't showing. This is used by people browsing with images turned off, or visually impaired people using screenreader technology.
- Please do not use alt text for attribution!
-
-
-
- For example, the AO3 logo has the following alt text: "Archive of Our Own".
-
diff --git a/public/help/pseud-icon-comment.html b/public/help/pseud-icon-comment.html
deleted file mode 100644
index d9bb4943c63..00000000000
--- a/public/help/pseud-icon-comment.html
+++ /dev/null
@@ -1 +0,0 @@
-You can put anything extra you have about your icon here, like credit for the maker of the icon.
\ No newline at end of file
From 8abe3e713a6071ee356f6db6be6e09e07a515ff5 Mon Sep 17 00:00:00 2001
From: zrei <88964793+zrei@users.noreply.github.com>
Date: Sat, 25 Jul 2026 16:48:31 +0800
Subject: [PATCH 2/4] AO3-7515 Fix erblint issue
---
app/views/help/icon_comment_text.html.erb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/views/help/icon_comment_text.html.erb b/app/views/help/icon_comment_text.html.erb
index abfb0b7f3fd..7bf15934f9f 100644
--- a/app/views/help/icon_comment_text.html.erb
+++ b/app/views/help/icon_comment_text.html.erb
@@ -1,3 +1,3 @@
<%= t(".page_heading") %>
-<%= t(".description") %>
\ No newline at end of file
+<%= t(".description") %>
From 88ff4f20e17b74c497aabd4e29fc95fffd38a8b3 Mon Sep 17 00:00:00 2001
From: zrei <88964793+zrei@users.noreply.github.com>
Date: Sat, 25 Jul 2026 17:26:14 +0800
Subject: [PATCH 3/4] AO3-7515 normalize locale file
---
config/locales/views/en.yml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/config/locales/views/en.yml b/config/locales/views/en.yml
index 1a6bd25f64b..732833901fc 100644
--- a/config/locales/views/en.yml
+++ b/config/locales/views/en.yml
@@ -1216,8 +1216,8 @@ en:
page_heading: Adding To Collections
removing_from_collection: If you change your mind about having an item in a collection, you can either edit the list of collections when editing it, or you can manage all your collected items under the "My Collections" page in your account.
collections_name:
- collection_name_rules: The name can consist only of ASCII letters (a-z, A-Z), numbers and underscores, and cannot contain spaces.
changing_collection_name: The name of the collection can be changed at a later point, but that will break links to the collection.
+ collection_name_rules: The name can consist only of ASCII letters (a-z, A-Z), numbers and underscores, and cannot contain spaces.
page_heading: Collection Name
first_login:
additional_info:
@@ -1357,8 +1357,9 @@ en:
unwilling_to_break: If you have put in some custom HTML (eg a list of items inside a ) and you don't want break tags or paragraphs inserted, just put it all on one line (sorry, this is the inconvenient tradeoff for automatically doing the paragraph/break tags).
page_heading: HTML on the Archive
icon_alt_text:
- alt_text_example: >
- For example, the AO3 logo has the following alt text: "Archive of Our Own".
+ alt_text_example: 'For example, the AO3 logo has the following alt text: "Archive of Our Own".
+
+ '
alt_text_explanation: The purpose of alt text is to explain the meaning of an image if the image isn't showing. This is used by people browsing with images turned off, or visually impaired people using screenreader technology. Please do not use alt text for attribution!
page_heading: Icon Alt Text
icon_comment_text:
From 5a5a2d272843a2ef8d4389b74b25d8ac569135a5 Mon Sep 17 00:00:00 2001
From: zrei <88964793+zrei@users.noreply.github.com>
Date: Sat, 25 Jul 2026 17:56:38 +0800
Subject: [PATCH 4/4] AO3-7515 remove newline from locale file
---
config/locales/views/en.yml | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/config/locales/views/en.yml b/config/locales/views/en.yml
index 732833901fc..9d0e95235ac 100644
--- a/config/locales/views/en.yml
+++ b/config/locales/views/en.yml
@@ -1357,9 +1357,7 @@ en:
unwilling_to_break: If you have put in some custom HTML (eg a list of items inside a ) and you don't want break tags or paragraphs inserted, just put it all on one line (sorry, this is the inconvenient tradeoff for automatically doing the paragraph/break tags).
page_heading: HTML on the Archive
icon_alt_text:
- alt_text_example: 'For example, the AO3 logo has the following alt text: "Archive of Our Own".
-
- '
+ alt_text_example: 'For example, the AO3 logo has the following alt text: "Archive of Our Own".'
alt_text_explanation: The purpose of alt text is to explain the meaning of an image if the image isn't showing. This is used by people browsing with images turned off, or visually impaired people using screenreader technology. Please do not use alt text for attribution!
page_heading: Icon Alt Text
icon_comment_text: