Broken/obscure navigation #210

Open
opened 2024-07-16 13:30:17 +02:00 by Oleg-Komarov · 9 comments
Owner

This is a collection of known issues with navigation on the website, such as links that lead to 404, missing or hidden affordances, any other confusing elements or flows.
While some of these can be tackled individually, looking at them together may lead to better ideas on organizing the navigation.

  • 404 pages (in awaiting review state)
    • If only a single version has been uploaded and the extensions is yet to be approved, clicking Version History leads to 404. (link is to /add-ons/{name}/#versions which doesn't exist yet)
    • If multiple versions are uploaded, you can click on Version History, but if then click on About from the Version History page you get 404. (link is to /add-ons/{name}/ which doesn't exist yet, but the /add-ons/{name}/#versions does
  • obscure/missing affordances
    • draft state
      • uploading new version while in draft state is not obvious:
        possible via "version history" by clicking on version link in sidebar, but no "version history" tab in draft
      • iterating on the first upload in general - deleting/replacing the first upload
      • deleting individual files for multi-platform versions
This is a collection of known issues with navigation on the website, such as links that lead to 404, missing or hidden affordances, any other confusing elements or flows. While some of these can be tackled individually, looking at them together may lead to better ideas on organizing the navigation. - 404 pages (in awaiting review state) - If only a single version has been uploaded and the extensions is yet to be approved, clicking Version History leads to 404. (link is to /add-ons/{name}/#versions which doesn't exist yet) - If multiple versions are uploaded, you can click on Version History, but if then click on About from the Version History page you get 404. (link is to /add-ons/{name}/ which doesn't exist yet, but the /add-ons/{name}/#versions does - obscure/missing affordances - draft state - uploading new version while in draft state is not obvious: possible via "version history" by clicking on version link in sidebar, but no "version history" tab in draft - iterating on the first upload in general - deleting/replacing the first upload - deleting individual files for multi-platform versions
Oleg-Komarov added the
Type
Enhancement
Type
Report
labels 2024-07-16 13:30:17 +02:00

Related to this: it would be nice to have a link (for moderators) to go to the Approval Queue from the extension page.

Related to this: it would be nice to have a link (for moderators) to go to the Approval Queue from the extension page.

Adding a few of my own:

  1. That red download button is kind of confusing. It's too big so it feels like the main action, and it's red so "dangerous", but I'm uploading to my own extension so I know. I think it's fine to have maybe the name of the file, and a smaller button to download, although I've literally just uploaded it in the previous screen so it's less useful. Good to have but more minimal. image

  2. After uploading (by pressing Save on the bottom right), I'm redirected to the public "Versions" list (/add-ons/{ extension-id }/manage/versions/). Since I'm the maintainer, the Extension is "under review", and my next step would be to Request Review again. Maybe we should redirect to the Review page (/approval-queue/{ extension-id }/)

  3. This is also kind of weird. I made the changes and now want to request review. So I need to Set it as Awaiting Review. It would communicate better if it was "Request Review" or similar. image


Related to this: it would be nice to have a link (for moderators) to go to the Approval Queue from the extension page.

Good point. I had it for admins but not for mods. Done in ba63ac9e2f

Adding a few of my own: 1. That red download button is kind of confusing. It's too big so it feels like the main action, and it's red so "dangerous", but I'm uploading to my own extension so I know. I think it's fine to have maybe the name of the file, and a smaller button to download, although I've literally just uploaded it in the previous screen so it's less useful. Good to have but more minimal. ![image](/attachments/65074f3d-3deb-47a9-b218-80d5621e58eb) 2. After uploading (by pressing Save on the bottom right), I'm redirected to the public "Versions" list (`/add-ons/{ extension-id }/manage/versions/`). Since I'm the maintainer, the Extension is "under review", and my next step would be to Request Review again. Maybe we should redirect to the Review page (`/approval-queue/{ extension-id }/`) 3. This is also kind of weird. I made the changes and now want to request review. So I need to **Set it as Awaiting Review**. It would communicate better if it was "Request Review" or similar. ![image](/attachments/3ffcb03b-6f6c-4897-bf5b-2d074bec358f) ---- > Related to this: it would be nice to have a link (for moderators) to go to the Approval Queue from the extension page. Good point. I had it for admins but not for mods. Done in ba63ac9e2f
518 KiB
209 KiB
Oleg-Komarov pinned this 2024-08-02 11:00:13 +02:00
Author
Owner

We are getting more reports about top tabs leading to 404 for extensions in Awaiting Review state.

@pablovazquez @martonlente what do you think is the best solution?

I see two approaches:

  1. on all pages that display tabs use the same template component that checks extension status and changes hrefs for "About" and "What's new" accordingly.
  2. use a tabs template component, but don't reuse the "About" and "What's new" tab for different hrefs in different statuses, instead of that define a list of all possible tabs for all statuses, and then filter the list based on status, e.g. have a data structure like this (example is not complete):
tabs = [
	{"name": "About", "href": extension.get_absolute_url(), "show_in_status": {"APPROVED"}},
    {"name": "Approval", "href": extension.get_absolute_url(), "show_in_status": {"AWAITING REVIEW"}},
    {"name": "Version History", "href": extension.get_versions_url(), "show_in_status": {"APPROVED", "DRAFT", "AWAITING REVIEW"}},
    ...
]
We are getting more reports about top tabs leading to 404 for extensions in Awaiting Review state. @pablovazquez @martonlente what do you think is the best solution? I see two approaches: 1. on all pages that display tabs use the same template component that checks extension status and changes hrefs for "About" and "What's new" accordingly. 2. use a tabs template component, but don't reuse the "About" and "What's new" tab for different hrefs in different statuses, instead of that define a list of all possible tabs for all statuses, and then filter the list based on status, e.g. have a data structure like this (example is not complete): ``` tabs = [ {"name": "About", "href": extension.get_absolute_url(), "show_in_status": {"APPROVED"}}, {"name": "Approval", "href": extension.get_absolute_url(), "show_in_status": {"AWAITING REVIEW"}}, {"name": "Version History", "href": extension.get_versions_url(), "show_in_status": {"APPROVED", "DRAFT", "AWAITING REVIEW"}}, ... ] ```

We are getting more reports about top tabs leading to 404 for extensions in Awaiting Review state.

@pablovazquez @martonlente what do you think is the best solution?

I see two approaches:

  1. on all pages that display tabs use the same template component that checks extension status and changes hrefs for "About" and "What's new" accordingly.
  2. use a tabs template component, but don't reuse the "About" and "What's new" tab for different hrefs in different statuses, instead of that define a list of all possible tabs for all statuses, and then filter the list based on status, e.g. have a data structure like this (example is not complete):
tabs = [
	{"name": "About", "href": extension.get_absolute_url(), "show_in_status": {"APPROVED"}},
    {"name": "Approval", "href": extension.get_absolute_url(), "show_in_status": {"AWAITING REVIEW"}},
    {"name": "Version History", "href": extension.get_versions_url(), "show_in_status": {"APPROVED", "DRAFT", "AWAITING REVIEW"}},
    ...
]

I'm not sure I understand the root issue of 404s, but to me both outlined improvements make sense from an architectural perspective. This is what I see:

  • Currently approved items use the hero_tabs block from the base template, while awaiting items use the hero_tabs block from the extensions_review_detail template.
  • hero_tabs could receive its own template component. It could replicate the current behaviour with nested conditionals.

Either if we go with option 1) or 2), creating a dedicate template component could be a first step.

> We are getting more reports about top tabs leading to 404 for extensions in Awaiting Review state. > > @pablovazquez @martonlente what do you think is the best solution? > > I see two approaches: > 1. on all pages that display tabs use the same template component that checks extension status and changes hrefs for "About" and "What's new" accordingly. > 2. use a tabs template component, but don't reuse the "About" and "What's new" tab for different hrefs in different statuses, instead of that define a list of all possible tabs for all statuses, and then filter the list based on status, e.g. have a data structure like this (example is not complete): > ``` > tabs = [ > {"name": "About", "href": extension.get_absolute_url(), "show_in_status": {"APPROVED"}}, > {"name": "Approval", "href": extension.get_absolute_url(), "show_in_status": {"AWAITING REVIEW"}}, > {"name": "Version History", "href": extension.get_versions_url(), "show_in_status": {"APPROVED", "DRAFT", "AWAITING REVIEW"}}, > ... > ] > ``` I'm not sure I understand the root issue of 404s, but to me both outlined improvements make sense from an architectural perspective. This is what I see: - Currently _approved_ items use the _hero_tabs_ block from the _base_ template, while _awaiting_ items use the _hero_tabs_ block from the _extensions_review_detail_ template. - _hero_tabs_ could receive its own template component. It could replicate the current behaviour with nested conditionals. Either if we go with option 1) or 2), creating a dedicate template component could be a first step.
Author
Owner

In these terms, what I propose in option 2 is to stop redefining hero_tabs logic in individual templates, but introduce a centralized place that controls the tabs list based on the extension status, and not on the template that includes the block.

In these terms, what I propose in option 2 is to stop redefining `hero_tabs` logic in individual templates, but introduce a centralized place that controls the tabs list based on the extension status, and not on the template that includes the block.
Author
Owner

Such a decision would ensure predictable and consistent navigation, but will limit the flexibility to some extent. Please let me know if you see a potential problem with this approach and its limitations:

  • the tabs can only be "switched on" and off based on predefined conditions, e.g. checking for extension status, or some other property like the presence of reviews
  • it will be possible to include the same tab for multiple statuses (e.g. version history)
  • the order in which the "on" tabs will be shown will always be the same, and the generated markup will be the same
  • it may still be possible to manually add more hard-coded tabs in a template markup for particular templates if needed

If this sounds reasonable, I can prepare a PR demonstrating this approach some time next week.

UPD (2024-08-12) Sorry, this hasn't happened yet, I am still working on some other project.

Such a decision would ensure predictable and consistent navigation, but will limit the flexibility to some extent. Please let me know if you see a potential problem with this approach and its limitations: - the tabs can only be "switched on" and off based on predefined conditions, e.g. checking for extension status, or some other property like the presence of reviews - it will be possible to include the same tab for multiple statuses (e.g. version history) - the order in which the "on" tabs will be shown will always be the same, and the generated markup will be the same - it may still be possible to manually add more hard-coded tabs in a template markup for particular templates if needed If this sounds reasonable, I can prepare a PR demonstrating this approach some time next week. UPD (2024-08-12) Sorry, this hasn't happened yet, I am still working on some other project.
Author
Owner

We may also want to expose available actions on the extension approval page more prominently:
#251 (comment)

Maybe showing them as separate top-level buttons instead of a dropdown field?

We may also want to expose available actions on the extension approval page more prominently: https://projects.blender.org/infrastructure/extensions-website/issues/251#issuecomment-1296186 Maybe showing them as separate top-level buttons instead of a dropdown field?

Maybe showing them as separate top-level buttons instead of a dropdown field?

That alone would be a huge improvement.

Something as simple as exposing them all in a left-aligned row:

  1. Approve (moderators)
  2. Request Changes (moderators)
  3. Request Review (author)
  4. Comment (everyone logged in)

buttons

> Maybe showing them as separate top-level buttons instead of a dropdown field? That alone would be a huge improvement. Something as simple as exposing them all in a left-aligned row: 1. Approve (moderators) 2. Request Changes (moderators) 3. Request Review (author) 4. Comment (everyone logged in) ![buttons](/attachments/f4ce96d4-8847-42e4-a977-67aa67b78fb3)

To add to the list of the origin of this issue (obscure navigation), there seems to be no way for a non-admin visitor/extension author, to get to the original approval page of an extension from the extension's page anymore, after it has been approved. The only way seems to be to go to the approval queue, go through the pages and on each page, search for the extension name. Apologies in case this is somewhere in the above conversation and i have missed it. Thank you.

To add to the list of the origin of this issue (obscure navigation), there seems to be no way for a non-admin visitor/extension author, to get to the original approval page of an extension from the extension's page anymore, after it has been approved. The only way seems to be to go to the approval queue, go through the pages and on each page, search for the extension name. Apologies in case this is somewhere in the above conversation and i have missed it. Thank you.
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: infrastructure/extensions-website#210
No description provided.