Feedback on "Reintroduce Tabs" #10488
Replies: 21 comments 55 replies
-
I guess it would be a good time to also rethink how "Content Apps" (other than the "content" content app), could add more tabs, or if they should be renamed somehow? |
Beta Was this translation helpful? Give feedback.
-
Love that you are putting "tabs" up with the content apps. I've always wanted to do that for Matryoshka. I think everything looks great, and I can't wait to use it. Are you going to change anything in the split view implementation? I've been wanting to experiment with opening the previewer in a split view, but it seems like its pretty hard coded to work with the content app. |
Beta Was this translation helpful? Give feedback.
-
Wow! This looks really good 🤩 Love the progress you've made with it 👏🏻 |
Beta Was this translation helpful? Give feedback.
-
How to migrate existing sites to/from tabs?Regarding easy conversion from groups into tabs, using drag and drop within the doctype editor would be great UX wise (this is listed as future improvement). If you have a lot of existing doctypes, this will be a lot of manual editing though... So I've created a SQL query to do exactly this (based on the current prototype, be sure to recycle/restart your site after executing to clear the cache): UPDATE [cmsPropertyTypeGroup] SET [type] = 1 WHERE [type] = 0 AND [parentKey] IS NULL; If you want to (safely) undo the above and convert tabs back into groups, the following SQL query can be executed (again, recycle/restart your site after running this): UPDATE [cmsPropertyTypeGroup] SET [type] = 0 WHERE [type] = 1 AND [parentKey] IS NULL AND [uniqueID] NOT IN (SELECT DISTINCT [parentKey] FROM [cmsPropertyTypeGroup] WHERE [parentKey] IS NOT NULL); Batch conversion will mostly be relevant to upgraded sites, as it will keep the current property groups to ensure backwards compatibility. We don't want to add additional settings to default to tabs instead of groups, as you'd need to set this before doing the upgrade and this would break compatibility/consistency when importing document types from older installs (e.g. package XML without explicit type set on the property group). If you have any thoughts on how we can make the conversion between groups and tabs as easy as possible, please share them here... |
Beta Was this translation helpful? Give feedback.
-
Looks like a great change! However, I am just worried about websites that already have quite a few content apps listed. For one of our websites we installed uMarketingSuite and TranslationManager which gives us 4 content apps. I feel like this together with the tabs could easily overwhelm the user. I wonder if we could fix this by grouping multiple content apps together somehow? Maybe a group uMarketingSuite would show the 3 content apps when hovering over? Or should package developers try to fit everything in one content app? |
Beta Was this translation helpful? Give feedback.
-
Another thing that I would like to see here as we move content apps closer to tabs is to make them not show up on split view. What if I have a content app that doesn't care about the variation of the content (language or segment)? Currently I would still be allowed to open it up in split view even though it'll just be a duplicate of each other. |
Beta Was this translation helpful? Give feedback.
-
How to handle removing tabs/groups?If you currently remove a group, it will remove all properties it contained. Because it's now possible to have properties directly on a tab: should we move the properties to the containing tab when a group (within a tab) is removed? And the same for removing tabs: should we move the containing groups directly to the doctype (and fall-back to the default 'Content' tab)? Removing the last tab should at least ensure the groups are moved directly to the doctype, otherwise it won't be possible to revert from tabs back into 'groups only', right? |
Beta Was this translation helpful? Give feedback.
-
Great to see that Tabs are on their way back. We love using Matryoshka and it'll be great to see that type of functionality back in the core. Also happy to see a discussion about renaming 'Content Apps'. However, really not sure about that placement up next to 'Content Apps'. Node-based content should really live together with the tabs. Sitting them up next to the 'Content Apps' doesn't work well from a content editors UX flow. When 'Content Apps' were introduced they were positioned in the top right to keep them outside of the main content area so they did not distract from the main content since it was for supporting data/content.
|
Beta Was this translation helpful? Give feedback.
-
This looks fantastic! We add Matryoshka to every single project, and seeing this iteration of tabs looks like an improved version of that. One thing that I'm sure is already on your radar is making the tabs menu sticky when editing the doctype to potentially make it easier to move properties or groups to different tabs. (I'm aware that this is more complex than it seems, but it would be good to see). Another thing to note is to try and make the reordering of the properties and groups possible with the keyboard. This would be a huge benefit to both keyboard and power users. In addition, will this have any implications on how compositions work, is a tab had it's own guid etc. For example what is I want multiple compositions that use the same tab name and I want to essentially configure multiple doc types with different compositions that all use the same tab name. (Apologies if this has already been answers and I've missed it) |
Beta Was this translation helpful? Give feedback.
-
First up, love this! 😍 In the below screenshot, there's a "validation errors must be fixed...". Is this red exclamation mark next to the Content tab visible if the user is scrolled down a long page? The notificationService red bar can be a bit vague & therefore frustrating by itself if you can't see where the validation error is in the open window. |
Beta Was this translation helpful? Give feedback.
-
My only point would be to challenge the desire to remove them in the first place which is hinted at in the opening text. It seems to be that because some sites abused the amount of tabs they used (and this was highlighted to/seen by HQ) we all lost them as a result in a bit of an over correction. A super tab heavy site is no fun for anyone but that doesn't mean it should be a limiting force on any future design choices. Some developers make poor choices, sure you can try to suggest they don't but they still will and sometimes needs must but don't let that be a driving factor on the new solution. If anything I'd take the constraint/desire of "stopping people making stupid choices about the amount of tabs" off the table in whatever you come up with, it lead us here and didn't serve us well in V8 and won't going forward. Then fresh eyes on the problem with that constraint banished to history. I'm very impressed with the work shown here so far. It warms the heart. All the best. |
Beta Was this translation helpful? Give feedback.
-
I think this looks great - a mixture of tabs and accordion was always my preferred solution. Being able to move stuff like SEO Settings to it's own tab - with an icon!! - is great. I do have a little concern about Content Apps - I wonder if there is more than two or three they should collapse to something akin to the Bootstrap Dropdown ? The other thing I'd like to see is a slightly stronger sense of which tab is currently selected. The underline just seems quite weak and it's not immediately obvious which tab you are looking at. Some stronger "selected" styling would be good - maybe darkening the other tabs or some use of drop shadow - could help make it more obvious. |
Beta Was this translation helpful? Give feedback.
-
I really like the way this is looking I have two observations/thoughts
Many thanks, |
Beta Was this translation helpful? Give feedback.
-
An interesting concept which gives me pause for thought(s):-
Tabs weren't broke, so didn't need fixing. Happy for the inclusion of groups within tabs but the tabs need to be in the eyeline and easy to operate. Not being a bore, just trying to give my clients the best possible (i.e. most efficient, not necessarily pretty) editing experience. It can be prettied up once the ergonomics work ;) |
Beta Was this translation helpful? Give feedback.
-
I am happy that tabs are making their way back into Umbraco. Never got to hear the reason why they were removed in the first place. Still curious about the reasoning behind that. However I don't like them being up in the content app navigation for several reasons. There is a issue that this area not always get noticed by editors. I often give training to editors or watch them edit content so we can optimize the content editing experience. And there is 2 questions I hear often :
Both of these arise because they don't notice the content apps. So moving tabs into this area might not be the ideal solution. Also when you have a lot of tabs this can get really crowded, even if you don't have any extra content apps. This is a example of one of our sites : One could argue that we have to many tabs. But from building sites on top of Umbraco for more that 15 years and actually watch editors do their job I can state the following :
From my experience I can say this works well. Editors rather have one extra tab to find a property in one click than that they have to spent time looking for a property. Before we had Matryoshka installed on this site we noticed that editors were having a hard time finding the property they wanted to edit because of all the scrolling they had to do. They could you use the group navigation drop down on the Content content app, but see my first point. How many of you actually use that navigation ? After we had Matryoskha installed their first reaction was that the editing experience was much better because they could see all the groups of properties at first glance. As Matryoshka was the recommend package by HQ to bring tabs back to the backoffice I think core tabs should look the same. Especially because Matryoshka is going to be retired. So if we want to change to core tabs once introduced, the editors again are faced with a new editing experience, which is not optimal. Dave |
Beta Was this translation helpful? Give feedback.
-
For some additional context re large numbers of tabs - one of our most heavily used content types has the following (from memory):
It's a lot, but it's also a sensible division of the content based on editors' activity and frequency. Conversely, a lot of our other types have one or two tabs only. There may not be a one size fits all solution, so the focus then needs to be on providing enough flexibility for implementors to build the appropriate editing experience for their users. I know when restoring tabs was first being discussed there was conversation around tabs OR groups, however the result looks like it will allow both. Makes sense then, I think, to consider allowing control over where the tabs are rendered... Different strokes for different folks, as they say in the classics. |
Beta Was this translation helpful? Give feedback.
-
Hey all, I just wanted to say a quick thank you for all your comments so far. We are listening carefully. The solution is not set in stone, so we are still able to change things. Please keep posting your points of view. Knowledge sharing is key and all your examples help a lot! 🥇 Thank you so far! |
Beta Was this translation helpful? Give feedback.
-
Great to see a healthy discussion on this and it's really good to know that nothing is set in stone. Having looked over the videos again it's interesting that the view for a Developer creating the Document Type with tabs on it is provided with the layout that would make the most sense on the content editor side of things. Echoing the layout from the Document Type view into the Content Editor will create a much more cohesive solution for someone who is both a developer and content editor, as many of us are. I think user testing is essential for this placement, just as it was when the decision was made to remove tabs in the first place — something that didn't seem to take place then. We're all hoping to make Umbraco a "content editor focused CMS" but these sort of decisions are being taken without consulting content editors. |
Beta Was this translation helpful? Give feedback.
-
I think there is something in the difference between properties that allow for the editing and visual display of content, properties that describe that content, eg meta data for SEO, and properties that control how the content interacts with the rest of the site, eg hide from navigation... I think editors have a different 'mental model' for these kinds of properties, ... with the content app style implementation for tabs, then that does feel a good way to 'divide' these properties, as I can have a Page Settings App Tab, or an SEO/Metadata App Tab - and focus the Content App Tab on only the visual elements of the page... ... but I don't think this would 'work well' if you had multiple tabs for visual content... then the content apps feel too far from the action? ... but once you move non-visual properties into Page Settings and Metadata... what's left for people? is there still a need for tabs beyond groups for visual properties? (it would be good to build some consensus over this to see how common this kind of scenario would be required - yes historically in V7 you would have 5+ tabs always, but is there a strong case for tabs for only visual properties? as that might tip the hat towards some kind of Matroyska approach...?) I think when thinking about tabs and groups that different 'editor journeys' should be considered /measured against the proposed implementation: Creating and Authoring Content As I think people are thinking about properties in different ways in this context, eg Creating and Authoring it's about the flow of the experience, but in Editing existing content it's about 'finding a specific property' to edit, and the two journeys aren't always complementary, and it's important to not just think of editors 'only' creating new pages when considering this... Finally, I think the organisation of the display of properties for groups vs tabs isn't the same paradigm... you can't just make the properties that were on a group into a tab, and vice versa and get the same experience... eg you tend to use 'more groups' than tabs due to the lack of horizontal limitation... and I find it interesting some of the solutions people have come up with for common interactions when fresh to V8, having not designed for V7 - For example, having groups of setting properties that 'instead of being properties on a tab' on every doctype that override via inheritance - are actually delivered by a 'Nested Content' page settings property, that allow you to 'add a nested content' item on a page that needs to override the default settings for that particular page,.. which is in response to managing 'vertical space' by not having tons of properties that are hardly ever used clogging up the scroll... so I'm rambling but I'm just trying to say that switching between the two 'paradigms' isn't 1-1, and so the addition of a separate 'level' (is level the right word? groupingType - or are we just reusing level from the database table column) is a good good thing.... ... of course, you kind of want the editor to be able to choose how they are arranged for the tasks they need to achieve, which might be different from their colleagues editing the same page... or even different for them depending on the task they are trying to achieve... (was there a 'favourite properties' package at some point in the past?) I'm also not too sure that we cover the nuances of Document Type, Site structure and property grouping good practices in training or documentation or by example anywhere... so a spin off outcome of reintroducing tabs could be the creation of this kind of supporting material, and this might also address concerns over implementations with 'too many tabs'.. eg show people how... |
Beta Was this translation helpful? Give feedback.
-
Thank you all for your feedback! When looking through your comments, we can see the pros and cons of both solutions. "Tabs in Apps" work great for simple doctypes, but "Tabs as tabs" are needed for more complex scenarios. We have been going back and forth to figure out what will be the best solution, but concluded that the implementor is the one who knows the best. The implementer should be in charge of what the best editing experience is, and we think that a combination of both solutions will be the right way in the future. When that is said, we can't ship everything at once. The feature will become too big, and we want to deliver a solution now that will help with the current problem in the backoffice - we miss the tabs. Changing directionBased on all your examples, we have changed our minds and the best first version of tabs is a tab bar (tab as tabs). Content editors who already know Matryoshka will get an editing experience close to what they already know and love. Part 1 - Tabs as tabsThe first version will be a tab bar. Our goal is Umbraco 8.16. Then you can start migrating your Matroyska Tabs to Umbraco Tabs before upgrading to v9. The doctype editor will be close to what you already have seen, but we won't include icons for tabs. Future Part - Full flexibility in groupsWe still think setting up doctypes should be more flexible. We don't think the current way to set up doctypes is fully suited for setting up complex doctypes with apps, tabs, groups, (columns?), etc. Setting up doctypes should be easy for newcomers and fast for experienced developers. Adding more buttons and complexity to the current doctype editor is not what we want. We will have to do some more thinking of how that could work. Update in data structureWe have made a small update to the proposed data model: "Level" is changed to "Type", which gives more flexibility. The level can already implicitly be determined by the parent/child relationships and having an explicit type opens up more ways for future flexibility. Limitations in v8Today it is not possible to have two groups with the same name. We will run into this limitation for tabs too. It won't be possible to have a group and tab with the same name (or the same group name within different tabs), as they are all stored as generic "groups". That is something to be aware of when migrating from Matryoshka. In Umbraco 9 we will be able to remove this limitation. Again, thank you all for bringing your concerns, ideas, and examples to the table! 🥳 |
Beta Was this translation helpful? Give feedback.
-
Att: Matryoshka users - I've put up some polls to get an idea of which features a being used in Matryoshka, if you can, please answer: https://twitter.com/skttl/status/1412678362376589315 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
In Umbraco 8, we introduced several new features and UI updates. We got Content Apps, Language Variants and split view. In the transition, we also moved from a tabbed content editor to a grouped content editor to provide what we saw as the best editing experience when working with variant content. After a lot of feedback, we have heard your wishes, and it is now time to bring the tabs back.
When we bring tabs back, we don't "just" want to revert to the previous editing experience. We want to make sure we handle the challenges that caused us to change the tabs to groups in the first place. Therefore we want to keep the groups, but add tabs as an optional extra layer of organization.
The combination of tabs and groups will provide the necessary level of organization to keep the number of tabs to a minimum, so we don't run into the problem of content nodes with a large number of tabs again.
Set up Document, Media and Member types.
When you open the doctype editor, you will notice a new bar where you can add tabs. If you don't need them, you don't have to use them. That also means that all upgraded sites will work the same. You can add tabs to a doctype or reorganize existing doctypes if needed.
Setting up tabs on a doctype:
Doc.types.-.Adding.tabs.+.validation.mp4
The data structure
Tabs are built on top of the current property group data structure: when you add a new tab they are stored in the same database table (
cmsPropertyTypeGroup
). We can't use integer IDs to build the relationships in AngularJS and therefore will use keys/GUIDs to reference each other using a parent key. This could in theory allow for unlimited nesting possibilities, but the UI will restrict it to tabs and groups. A property has also been added for an icon (including color) and because both tabs and groups can be added directly on the doctype, the new level property stores how it should be displayed (level 0 = tab, level 1 = property group). We only have to explicitly check the level whenever the parent key is not set, otherwise the level should be implicitly derived from the parent groups level + 1. See data structure presented as JSON:The following structures are possible using this approach:
We initially agreed upon using a 'special' value as parent key, e.g.
null
= group and00000000-0000-0000-0000-000000000000
= tab. Besides not being completely clear, we can't enforce a foreign key constraint to ensure we don’t end up with orphaned groups.In our current version, we use a nullable, self-referencing parent key column with foreign key constraint and a generic
level
column (0 = tab, 1 = group) - which also allows for future extension, e.g. level 2 = fieldsets (horizontal groups, like zipcode/address, first/last name, etc.).Package XML (export/import) and deployment
Because the data structure only adds new properties (parentKey, level, icon), existing package.xml/exported UDT-files should be backward compatible. Importing data from older versions will only create groups, so this will create the same structure as before (and thus the same as when migrating an existing site to the newer version). Exports from newer versions containing tabs won’t be officially supported on older versions though, but it should import tabs as groups (as older versions don’t know about the new properties).
The XML format has a few caveats: groups are stored in the element and are referenced by name, so tabs/groups will need to have unique names (currently groups are merged by name, but the new structure allows the same name in different levels). We will include new elements to support the new structure:
Umbraco Deploy already generates UDA-files that use nested properties and GUID-keys, so this only requires exporting the new properties:
Content editing
When editing content, we discussed two different versions of how we could implement tabs. The first approach is similar to the Matryoshka package. We add an extra navigation bar underneath the editor header (See package for details). The second approach is to combine the tabs with the Content Apps navigation.
After we tested both concepts, we went with the second one. With one unified navigation for content editing, we achieve the simplicity we strive for in the back-office.
Content.section.-.tabs.mp4
Validation
Validation uses the badge system we already have for Content Apps. If one of the tabs contains a validation error, it will show a bouncing badge.
Current tab with validation error

Other tab with validation error

Split view
Currently, the split view only allows editing of the "Content" Content App. With these changes it will be possible to open any tab/app in the split view.
Content.Section.-.Split.view.+.validation.mp4
Block List Editor + Nested Content
The concept is still in the workings, but the general ideas are:
Block List Editor
The Block List Editor will work like the Content Editor. We will add the new tabs as part of the header where the current “Content” and “Settings”-tabs are. With inline-editing enabled, we can show the cog if there's more than 1 tab (similar to how the cog appears when settings are available).
Nested Content
Nested Content would mostly work the same. You pick which group to show from a dropdown (in the editor config) and tabs would be part of that. Nested Content will render properties added directly under the group or tab.
What will happen to Content Apps?
Content Apps will stay the same and will work like they always have. The only differences are that tabs will swap places with the current "Content" Content App and the full navigation will be available in split view.
Brainstorm of ideas and further improvements
With the new combined Content Apps and tab navigation, we have opened up some new ideas that might make sense for future improvements.
Final question. Do we call tabs for apps or what do we do with naming? (discussion about renaming Content Apps)
Current prototype (WIP):
v8/dev...v8/prototype/doctype-tabs
Beta Was this translation helpful? Give feedback.
All reactions