Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorganize the Admin Menu #17112

Open
wants to merge 29 commits into
base: main
Choose a base branch
from
Open

Reorganize the Admin Menu #17112

wants to merge 29 commits into from

Conversation

MikeAlhayek
Copy link
Member

@MikeAlhayek MikeAlhayek commented Dec 3, 2024

Fix #11942

Legacy Mode

If you are not ready yet to update the menu in your project, you can enable the legacy format by adding this code to your startup project

AppContext.SetSwitch("LegacyAdminMenuNavigation", true);

Consolidate All Settings Under 'Settings' Menu and Replace 'Configuration' with 'Tools'

image

Moved the "Content definitions" menu to "Design" tab

image

Access Control

image

image

Settings Menu (All Features Enabled)

image

image

image

image

image

image

Tools Menu

I also moved the Workflows and Audit Trail under Tools instead of the root level.

image

image

image

image

image

@MikeAlhayek MikeAlhayek requested a review from Piedone December 3, 2024 22:03
@hishamco
Copy link
Member

hishamco commented Dec 4, 2024

This is the first time I have seen Tools menu, where did it come from?!!

@MikeAlhayek
Copy link
Member Author

MikeAlhayek commented Dec 4, 2024

Please read the referenced issue.

@hishamco
Copy link
Member

hishamco commented Dec 4, 2024

Move any site setting or configurations under the “Configuration > Settings” menu

No Tools mentioned there?!! BTW the link in the related issue is broken

@MikeAlhayek
Copy link
Member Author

Look at the discussions. Tools is a better term to use here since we added the Settings. Do
You have an issue with Tools?

@gvkries
Copy link
Contributor

gvkries commented Dec 4, 2024

I like it, but I'm not sure about moving audit trail. I think it's important enough to stay at the root.

While you are at it, do we agree to move GraphiQL to Tools, or should it go to search as requested in #12710? I think it makes sense in the new tools menu.

@gvkries
Copy link
Contributor

gvkries commented Dec 4, 2024

Additionally, can we somehow group authentication and security settings? They seem to be closely related IMHO.

@MikeAlhayek
Copy link
Member Author

I like it, but I'm not sure about moving audit trail. I think it's important enough to stay at the root.

This was requested by @sebastienros in one of the meetings. I prefer keeping the main menu free for users to utilize as they see fit. While the importance of features is clear, it can vary greatly from one user to another. So, why should the Audit Trail take priority over other features like Workflows, the Admin Menu, Features or Deployments?

Additionally, can we somehow group authentication and security settings? They seem to be closely related IMHO.

I do not disagree with you there and Authentication is part of security. I am just trying to not add yet another level to the depth of the menu. and is one of the reasons why I went down an alternative approach here so that the main menu is much thinner and not too deep.

@gvkries
Copy link
Contributor

gvkries commented Dec 4, 2024

I like it, but I'm not sure about moving audit trail. I think it's important enough to stay at the root.

This was requested by @sebastienros in one of the meetings. I prefer keeping the main menu free for users to utilize as they see fit. While the importance of features is clear, it can vary greatly from one user to another. So, why should the Audit Trail take priority over other features like Workflows, the Admin Menu, Features or Deployments?

Additionally, can we somehow group authentication and security settings? They seem to be closely related IMHO.

I do not disagree with you there and Authentication is part of security. I am just trying to not add yet another level to the depth of the menu. and is one of the reasons why I went down an alternative approach here so that the main menu is much thinner and not too deep.

Thanks, I agree with all you said.

@MikeAlhayek
Copy link
Member Author

@gvkries I moved the OpenId Connect and Authentication under Security just so we can see if the experience is acceptable or not. Feel free to checkout the branch and test driving it.

I also renamed the "Security" tab at the root level to "Access Control." This feels like a much better fit, especially since the security settings have been moved to the Settings tab. The term "Security" can often feel overused, and "Access Control" provides a clearer, more specific representation of the functionality related to users, roles, and authentication.

@MikeAlhayek MikeAlhayek added the breaking change 💥 Issues or pull requests that introduces breaking change(s) label Dec 4, 2024
@Piedone
Copy link
Member

Piedone commented Dec 5, 2024

In general, I'm OK with this.

However, I see frustration both for users (to learn and unlearn the new menu structure) and developers (basically all admin menus will need to be checked, most changed) when getting this update. Documentation needs to be updated all over the place as well. All of these are subtle breaking changes one will only discover when bumping into an issue or users complaining, not instantly clear like a build error.

I don't know how to make this easier. For sure it starts with documenting it, and providing a search & replace pattern for the simple case of Configuration -> Settings, so you can at least quickly fix that in the codebase.

@MikeAlhayek
Copy link
Member Author

Once we all agree on the new menu, I'll update the documentation and add release notes updates. We'll probably talk more about it during triage tomorrow.

I do agree it's going to require every project to change. But the good news that it's part of 3.0 :)

@sebastienros
Copy link
Member

If we could not screw users for some time that would be great. There are breaking changes that don't break anyone or are super natural to fix ([Obsolete] with what to do instead) and breaking changes that really suck because they seem like unnecessary small changes and impact lots of installs.

But the good news that it's part of 3.0 :)

This doesn't sound good. It's not because we had to ship some breaking changes that we can add any other ones. Every breaking change should be done with measure.

@MikeAlhayek
Copy link
Member Author

@sebastienros We could complicate things and introduce a switch to keep old behavior. But if we do that, the code will double as we'll need to check the switch and either load old menu or old menu.

Alternatively, we could create a second menu "admin" and "admin-new" so if the user want to stay with prior state, then we would load admin-new instead of "admin"

@gvkries
Copy link
Contributor

gvkries commented Dec 6, 2024

I've tried this out and I love it :-)

Some things I would like to mention:

  • Features: I've expected this in Settings first, but it kind of makes more sense in tools. Might need to get used to it, because it was configuration before.
  • As noted above in a comment, I would stick with the existing title casing. I find that more compelling.
  • Keeping tools and settings at the end makes sense for me. E.g. moving multi-tenancy up.

Thanks @MikeAlhayek

@MikeAlhayek
Copy link
Member Author

@gvkries if you can, please checkout the PR and test drive the changes.

Here is a recipe that would enable all the feature that I am using in you or someone else want to test drive

{
  "steps": [
    {
      "name": "Feature",
      "enable": [
        "Application.Default",
        "OrchardCore.Cms.Web",
        "OrchardCore.Settings",
        "OrchardCore.Admin",
        "OrchardCore.Liquid",
        "OrchardCore.Contents",
        "OrchardCore.ContentTypes",
        "OrchardCore.Shortcodes",
        "OrchardCore.Html",
        "OrchardCore.Recipes.Core",
        "OrchardCore.Title",
        "OrchardCore.AdminMenu",
        "OrchardCore.Templates",
        "OrchardCore.AdminTemplates",
        "OrchardCore.Alias",
        "OrchardCore.Apis.GraphQL",
        "OrchardCore.ArchiveLater",
        "OrchardCore.AuditTrail",
        "OrchardCore.Autoroute",
        "OrchardCore.Scripting",
        "OrchardCore.Recipes",
        "OrchardCore.BackgroundTasks",
        "OrchardCore.ContentFields",
        "OrchardCore.ContentFields.Indexing.SQL",
        "OrchardCore.Roles.Core",
        "OrchardCore.Users",
        "OrchardCore.ContentFields.Indexing.SQL.UserPicker",
        "OrchardCore.Localization",
        "OrchardCore.Users.Localization",
        "OrchardCore.ContentLocalization",
        "OrchardCore.ContentLocalization.ContentCulturePicker",
        "OrchardCore.Sitemaps",
        "OrchardCore.ContentLocalization.Sitemaps",
        "OrchardCore.ContentPreview",
        "OrchardCore.Deployment",
        "OrchardCore.Contents.Deployment.Download",
        "OrchardCore.Contents.Deployment.ExportContentToDeploymentTarget",
        "OrchardCore.CustomSettings",
        "OrchardCore.Deployment.Remote",
        "OrchardCore.Diagnostics",
        "OrchardCore.DynamicCache",
        "OrchardCore.Email",
        "OrchardCore.Email.Azure",
        "OrchardCore.Email.Smtp",
        "OrchardCore.Facebook",
        "OrchardCore.Users.ExternalAuthentication",
        "OrchardCore.Facebook.Login",
        "OrchardCore.Facebook.Pixel",
        "OrchardCore.Widgets",
        "OrchardCore.Facebook.Widgets",
        "OrchardCore.Resources",
        "OrchardCore.Features",
        "OrchardCore.Feeds",
        "OrchardCore.Flows",
        "OrchardCore.Forms",
        "OrchardCore.GitHub.Authentication",
        "OrchardCore.Google.Analytics",
        "OrchardCore.Google.GoogleAuthentication",
        "OrchardCore.Google.TagManager",
        "OrchardCore.HealthChecks",
        "OrchardCore.HomeRoute",
        "OrchardCore.Https",
        "OrchardCore.Indexing",
        "OrchardCore.Rules",
        "OrchardCore.Layers",
        "OrchardCore.Lists",
        "OrchardCore.Localization.AdminCulturePicker",
        "OrchardCore.Localization.ContentLanguageHeader",
        "OrchardCore.Markdown",
        "OrchardCore.Media",
        "OrchardCore.Media.Cache",
        "OrchardCore.Media.AmazonS3",
        "OrchardCore.Media.AmazonS3.ImageSharpImageCache",
        "OrchardCore.Media.Azure.ImageSharpImageCache",
        "OrchardCore.Media.Azure.Storage",
        "OrchardCore.Media.Indexing",
        "OrchardCore.Media.Indexing.OpenXML",
        "OrchardCore.Media.Indexing.Pdf",
        "OrchardCore.Media.Indexing.Text",
        "OrchardCore.Media.Security",
        "OrchardCore.Media.Slugify",
        "OrchardCore.Menu",
        "OrchardCore.Microsoft.Authentication.AzureAD",
        "OrchardCore.Microsoft.Authentication.MicrosoftAccount",
        "OrchardCore.Navigation",
        "OrchardCore.Notifications",
        "OrchardCore.Notifications.Email",
        "OrchardCore.Sms",
        "OrchardCore.Notifications.Sms",
        "OrchardCore.OpenId",
        "OrchardCore.OpenId.Client",
        "OrchardCore.OpenId.Management",
        "OrchardCore.OpenId.Server",
        "OrchardCore.OpenId.Validation",
        "OrchardCore.Placements",
        "OrchardCore.PublishLater",
        "OrchardCore.Queries.Core",
        "OrchardCore.Queries",
        "OrchardCore.Queries.Sql",
        "OrchardCore.ReCaptcha",
        "OrchardCore.ReCaptcha.Users",
        "OrchardCore.XmlRpc",
        "OrchardCore.RemotePublishing",
        "OrchardCore.ReverseProxy",
        "OrchardCore.Roles",
        "OrchardCore.Search",
        "OrchardCore.Search.Elasticsearch",
        "OrchardCore.Search.Elasticsearch.ContentPicker",
        "OrchardCore.Search.Elasticsearch.Worker",
        "OrchardCore.Security",
        "OrchardCore.Seo",
        "OrchardCore.Shortcodes.Templates",
        "OrchardCore.Sitemaps.Cleanup",
        "OrchardCore.Sitemaps.RazorPages",
        "OrchardCore.Sms.Azure",
        "OrchardCore.Taxonomies",
        "OrchardCore.Taxonomies.ContentsAdminList",
        "OrchardCore.Themes",
        "OrchardCore.Twitter",
        "OrchardCore.Twitter.Signin",
        "OrchardCore.UrlRewriting",
        "OrchardCore.Users.2FA",
        "OrchardCore.Users.2FA.AuthenticatorApp",
        "OrchardCore.Users.2FA.Email",
        "OrchardCore.Users.2FA.Sms",
        "OrchardCore.Users.AuditTrail",
        "OrchardCore.Users.ChangeEmail",
        "OrchardCore.Users.CustomUserSettings",
        "OrchardCore.Users.Registration",
        "OrchardCore.Users.ResetPassword",
        "OrchardCore.Users.TimeZone",
        "OrchardCore.Workflows",
        "OrchardCore.Workflows.Http",
        "OrchardCore.Workflows.Session",
        "OrchardCore.Workflows.Timers",
        "SafeMode",
        "TheAdmin",
        "TheBlogTheme"
      ]
    }
  ]
}

@Piedone
Copy link
Member

Piedone commented Dec 13, 2024

"Design" is very much about look and feel for me, so I wouldn't put Content Definition there; that's good under Content (I wouldn't move it, but if everybody is against it staying, then at least Settings). Media, however, I'd consider either content (it is content, though it's not content items) or a top-level item.

However, it has always bothered me that we have Content -> Content Types, and it's not actually about content types (and not to be confused with Content -> Content Definition -> Content Types), but content items filtered by content types. Perhaps "Items by Type"?

@sebastienros
Copy link
Member

@Piedone hopefully you can watch the meeting soon

https://dictionary.cambridge.org/dictionary/english/design

@MikeAlhayek
Copy link
Member Author

@Piedone

"Design" is very much about look and feel for me

That is what I thought at first. However, it contains other things like shortcodes and placements. If these were not there, they I would have suggested it to name it "Appearance" instead of "Design". That said, "Design" is more than Appearance, so we thought its better to move the content definition "which is a content design" and keep the menu called "Design".

@sebastienros even suggested to move Workflows into Design too which I don't mind. But @gvkries did not like that idea. Thoughts on that? Workflow can fit under tools and under Design.

it has always bothered me that we have Content -> Content Types, and it's not actually about content types

This is part of the blog recipe and can be changed. It's not part of the default navigation providers. We can always put that one level up instead of it being in "Content types" as well.

Media, however, I'd consider either content (it is content, though it's not content items) or a top-level item

It is currently on the top level and I find it much better this way. So we agree on the media being top level.

@Piedone
Copy link
Member

Piedone commented Dec 14, 2024

OK then! Please fix the Blog recipe too, then.

Workflows is much more Tools for me than Design.

@MikeAlhayek
Copy link
Member Author

@Piedone I updated the blog recipe. I am not sure why we were showing all content types on the menu. Not very helpful. It was just extra clutter. I updated it to only show Articles, Pages, and Taxonomy.

image

@Piedone
Copy link
Member

Piedone commented Dec 15, 2024

Looks good!

@MikeAlhayek
Copy link
Member Author

@Piedone @sebastienros @gvkries Any objections to merging this PR? I'd like to give everyone some time to familiarize themselves with the new structure and potentially make any necessary updates or suggest further improvements we might have missed. Once we release a new preview with these changes, I hope it will prompt more feedback (if any) from the community.

@@ -22,18 +22,34 @@ public AdminMenu(IStringLocalizer<AdminMenu> stringLocalizer)

protected override ValueTask BuildAsync(NavigationBuilder builder)
{
builder
if (NavigationHelper.UseLegacyFormat())
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add to the release notes about this PR, as well as how to opt back to the legacy format. The documentation also needs to be combed through for any references to the menu structure, either in written instructions, or images.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Planning to update the docs before merging. Just need to finalize the PR first.

builder
.Add(S["Configuration"], configuration => configuration
.Add(S["Tools"], tools => tools
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me, Tools are functionality that act on the system on a technical level, and aren't about just changing settings. Features is the latter category, as well as admin menus.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I strongly disagree with your suggestion to moving Feature and Admin Menu to the Settings menu. I think they should stay under tools. These are better fit for tools. + we don't need to treat everything are settings and clutter the settings menu more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is toggling feature states more of a tool than configuration?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a tool to enable/disable features. It's not purely settings. We should not just start moving things into settings just because they make changes. We should only put settings related items under settings.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't the configuration page to change the site's title also but a tool to set the title? Or would a different features UI, like with a list of checkboxes for each feature and a Save button at the bottom, make it more settings-y? :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me, if we have a form to fill out or change settings, that would be under the Settings. Features, its a tool to manage features.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if I tell you that the Features page is actually a form already? :)

My point is, we have to distinguish between these based on the underlying principle and not a perception of the current UI, and toggling feature states is changing configuration, i.e. settings, in the same way as changing the site title is.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you strongly feel it should be in Settings while I strongly feel it should be in Tools, I think we should get other opinions on this. We'll discuss it more in the Steering meeting today.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Piedone talked about this in the meeting. @sebastienros and @gvkries suggested to keep it in Tools as well.

.Permission(Permissions.ManageEmailSettings)
.LocalNav()
)
.Add(S["Email test"], S["Email test"].PrefixPosition(), entry => entry
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think I'd look for sending a test e-mail under Tools -> Testing -> Email test after configuring email settings under Settings -> Communication -> Email.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a tool to test email or SMS service.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arguably yes, but nobody will think about it like this when setting up e-mail (or SMS) delivery. You want to test e-mail sending after changing the e-mail config.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, that would be the first thing I would look under. I would never guess that a service test would reside under settings.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your first thought would be to look four steps elsewhere in the menu structure, under an item named "Testing"? Perhaps if you configure e.g. SMTP settings in appsettings (i.e. not under Settings -> Communication -> Email) then it's better, but it's not at all intuitive when working with the settings from the admin. A notification displayed after saving the e-mail/SMS settings along the lines of "Do you want to verify if these settings work? Send a test email ."

"Testing" is not my favorite in itself, I'd first understand it as having something to do with automated testing like unit tests. Having a Tools -> Communication submenu too seems better.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testing would be for any kinds of testing. At least that was the idea. So if we have more service test tools, we can place them under the testing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we'll ever have those, most possibly they'll more appropriate in a more expressive submenu too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel "Testing" menu here is a great fit. If you have a batter generic name, I am okay with it. But these should not be moved into settings.

At a high level, any UI that users OrchardCore.Settings should be put in Settings along with readonly settings like the media options. Any tool like testing, url rewriting, features, etc would be a tool.

builder
.Add(S["Settings"], settings => settings
.Add(S["Security"], S["Security"].PrefixPosition(), security => security
.Add(S["Authentication"], S["Authentication"].PrefixPosition(), authentication => authentication
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather External Authentication, for the others too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would rather keep it Authentication. Why would we call it external authentication where is this the other authentication item we have in the menu. The other thing have is Access control

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only items under this after enabling every feature are external authentication settings.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Authentication would shorter with same meaning. Also if we ever need to add authentication settings related to local authentication that would go under an authentication otherwise we could end up with Authentication and External Authentication.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Authentication is also about local authentication, the settings of which (related to login and registration) are not under this menu but a level up.

And yes, we could totally have a differentiation here, with a Local Authentication and External Authentication menu (or just one Authentication, but then having all authentication-related things under it).

Additionally, now we have Access Control, Security, and Authentication, which is confusing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Access Control is for managing access. Security and Authentication items under the settings menu are are different things.
Security are security related settings for the app itself like header, CORS, https..

If you think we should call it External Authentication, then maybe we should also move the local authentication under "Authentication" so we have two sub menus.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking more at the current setup, I think Registration, User Login, and Change Email are great under "Security". External Authentication providers are under "Authentication" make sense to me without the word "External". If you want to suggest a new setup, please share a bullet bases structure so the picture becomes clear. The following looks great to me.

image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also think that we don't need to have an extra "external" authentication. External vs. local is still all "Authentication" and easy to find there.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The distinction between Access Control, Security, and Authentication is not big enough, that's my problem; they're terms which denote things that are arguably parts of each other. I understand them, and working back from the menu items and if you know what exactly those are, then it makes sense, but not from the other way around. Like, I want to find the configuration for login; why can't I find it under Access Control? Or Security -> Authentication? These menu items should be commonly clear enough that if you roughly know what you're looking for, you can find your way there.

User Login is a synonym for "authentication", but it's not under the menu Authentication. So again, we should either call the current Authentication menu External Authentication, because it only contains items about that, or move Change Email, Registration, Reset Password, User Login under it too.

However, us arguing about these shows a deeper problem, which I've commented on at the root.

@MikeAlhayek MikeAlhayek requested a review from Piedone December 17, 2024 16:25
@Piedone
Copy link
Member

Piedone commented Dec 17, 2024

#17112 (comment) brings up a larger issue: the majority of this structuring is opinionated and not at all clear to multiple people in the same way. I'm afraid we'll go circles here, and the end result won't make more people happy than where we started.

@MikeAlhayek
Copy link
Member Author

#17112 (comment) brings up a larger issue: the majority of this structuring is opinionated and not at all clear to multiple people in the same way. I'm afraid we'll go circles here, and the end result won't make more people happy than where we started.

Everything that we have today about the UI is opinionated. I am not sure there is a new issue.

@Piedone
Copy link
Member

Piedone commented Dec 19, 2024

The new issue is that the current menu is already out there, and has been for a long time, while this PR moves things around, forcing everyone, developers and users alike, to adapt, and in a significant way. Our conversations in the various comment threads and otherwise show that this is not at all a clear matter, and thus we'll change the current opinion with a different opinion, thinking that it'll be better, but ultimately not having much to back it. UX is not a hard science, but it can still be more methodical than developers sharing their opinions. And in such a case, the status quo wins, because it doesn't need everyone to put work into it.

I don't think we should change the menu after conversing just among ourselves. I know, and commend, that you've asked for wider feedback, but us not getting any doesn't mean that most people will be happy with the result. I see no point in arguing among ourselves further about things like whether something is a tool or a setting. Perhaps we're the worst people for this, actually, since it has been very long since we needed to find something in the menu without having a clue, or without understanding the fundamentals.

So, taking a step back, I propose rethinking the admin experience, something that's not a new idea by far: with the help of a UX professional (I have ideas on how to find them and Lombiq can fund their work), do the following:

  1. Find a suitable open-source Boostrap dashboard theme/template as a base. We'll need to build a somewhat custom admin story, but not from the ground up.
  2. Figure out the basic Orchard Core-specific UI principles the admin should follow.
  3. Update a single UI to be our perfect role model (like the basic content item editor), and the menu structure. The rest of the UI will be kept more or less as-is, but with updated common visuals (coming from the theme) and quick wins (e.g. common pieces like buttons, hints, labels, fields, will all be updated just by updating the common classes, or with search and replace).
  4. Release it as part of a major version. In the future, perhaps, maybe, follow the role model in all existing UI, and definitely in new UI. But whatever we'll have will be good enough.

BTW @BenedekFarkas re #11942 (comment): I thought about menu item favoriting too. It's perhaps something that an existing template can offer, but if not, it's not a big deal to implement.

@MikeAlhayek
Copy link
Member Author

@Piedone At this point, don't you think restarting the process might be too late, given the significant time we've already spent discussing it across various platforms?

If you have the time to consult a UI expert to guide the menu structure, I'm all for it. However, I also want to avoid letting this PR sit for too long, especially considering the amount of time and effort already invested by everyone, including yourself.

The current structure in this PR reflects the efforts to incorporate all the feedback we've received, aiming to create a solution that works for the majority.

@Piedone
Copy link
Member

Piedone commented Dec 19, 2024

Despite the time spent, no, at this point I wouldn't merge this: the changes are disruptive, so we better be sure of it, lest we have to repeat it.

@MikeAlhayek
Copy link
Member Author

the changes are disruptive

Its not. We already provide a backward compatible (legacy mode).

the changes are disruptive, so we better be sure of it, lest we have to repeat it.

Is there a timeline on when you'll have a UX expert look at this and provide us feedback?

@Piedone
Copy link
Member

Piedone commented Dec 21, 2024

It's disruptive because while you can switch back temporarily, we surely won't maintain two menus forever. At that point, it'll still come at once, it's not something gradual, just optionally delayed.

I don't see much point in moving around the menu in itself, because we're missing the forest from the trees: What we need is a path to improve the admin experience, coherently and with guiding principles, not small pieces of it in isolation and without an overarching plan. Nobody will be able to help us with just the menu, without thinking through the whole thing: we might be better off with a different structure of the admin area, to begin with, perhaps with other ways of navigation as well, even secondary as you previously suggested, or whatever else.

This will take months, but we'll have something for the long-term. If we want to try this approach, I can look into finding a suitable UX person now, and with the holidays I'd guess start this in earnest mid-January.

@MikeAlhayek
Copy link
Member Author

It's disruptive because while you can switch back temporarily

It's temporary if we decide it going to be temporary. It could be a long term or permanent placement.

I don't see much point in moving around the menu in itself, because we're missing the forest from the trees

While you don't, I and many other see the point.

This will take months, but we'll have something for the long-term. If we want to try this approach, I can look into finding a suitable UX person now, and with the holidays I'd guess start this in earnest mid-January.

I feel that you are purposely trying to complicating this just because you don't seem to agree with the request.

The request is coming from many feedback I personally get. And others, tested it and seem to be happier with it.

Anyway, will talk more about this during the next meeting, hopefully you can join.

@Piedone
Copy link
Member

Piedone commented Dec 21, 2024

I also told in the very beginning that:

We should go outside of the circle of a few core maintainers and see what users say. Perhaps also ask some UX person and see what other systems do.

I'm still suggesting the same.

It's not that I merely disagree (I personally actually agree with almost all the changes here, as you've seen); rather, I'm of the viewpoint that these changes, in this form, aren't a net benefit to OC itself and the wider ecosystem.

@MikeAlhayek
Copy link
Member Author

I'm still suggesting the same.

I understand. But, unless you are willing to find a consultant to provide us with their opinion, no one will. We already tried to ping the community to get as much feedback as possible. I internally consulted the end users "not developers" as well. So we have been following your suggestion all along and the current state of the PR seems to be accepted by folks other than me like @sebastienros @gvkries and other community members and internal end users.

@Piedone
Copy link
Member

Piedone commented Dec 24, 2024

I am willing, that's what I told above, and Lombiq will fund it.

What was the feedback those internal end users had to share about the current menu?

@MikeAlhayek
Copy link
Member Author

I am willing, that's what I told above, and Lombiq will fund it.

Can't wait to hear what feedback we get back. Please update us on the process. Hopefully it won't be long time before your consultant some back with some feedback.

What was the feedback those internal end users had to share about the current menu?

They love the current state. They said the menu is much easier to navigate and find what they are looking for. I incorporated the feedback previously which was mainly around settings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking change 💥 Issues or pull requests that introduces breaking change(s)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Move all settings menu items under Configuration > Settings menu
7 participants