7.1 Navigation consistency changes

In 7.1 a lot of work has been done to resolve some long standing issues that allow errors and user behavior we do not prevent or make clear, to cause the system, and in particular the structure of the navigation to become inconsistent or just simply confusing. Things that could go wrong are

[ul]
[li]Navon items are created and immediately orphaned (Not in any folder but still searchable) if they cannot be put into a folder
[/li][li]Navon items can be moved to any folder but the parent Navon remains the same, this causes the navon hierarchy to become inconsistent with the folder hierarchy, this can be very confusing to users and analysis can only be done using Impact analysis tool.
[/li][li]A user can add a Navon item to the submenu slot of more than one parent in trying to link to different sections from a left nav. The system then does not know which parent to use when rendering navigation e.g. breadcrumb.
[/li][li]A user can remove a Navon from the submenu slot thinking this is the way to remove the link from the navigation. This breaks the structure though and causes any pages under the removed folder to not be able to find the Navtree causing a broken breadcrumb.
[/li][li]Users will remove navon items from a folder, but this does not remove the link to the parent item. This can cause at the least a confusion where the parent navon appears to be linked correctly to a subfolder but in fact it is linked to an orphanded item.
[/li][li]
[/li][/ul]

The following changes now make sure the structure remains consistent

A Navon cannot be independently removed from a folder. Once a navon is created in a folder it is tied directly to that folder. The folder itself can be moved with the Navon within it but the navon itself cannot be. We found that users would rename a folder, create a new folder and then try and copy or move all the old items into the new folder, often the Navon would be copied with the rest of the content but would fail as the new folder usually had a navon already created this would cause some confusing broken navigation state.

A folder containing a Navon cannot be moved to another folder if the destination does not have a Navon. Moving to a folder without a Navon would cause the navigation structure of all the items to no longer be linked correctly to any parent breaking the navigation. One exclusion to this is these folders can be moved under //Folders as this area would not normally be published as part of a site so can be used to temporarily store/remove a whole folder structure from the site without permanently purging it. The folder could be moved back to the site and linked in correctly when required.

Purging of Navons should not be allowed. Purging a Navon item breaks the navigation for all descendent children. The new Purge All menu action does not allow purge directly on Navon or NavTree but will purging a folder with its contents and navigation will guarantee consistency. Purge Navigation can be used to remove just the navigation elements in a consistent way. The old “Remove from Folder” for folders would purge all descendent folders and Navigation but leave the rest of the content in an orphaned state, this is generally not expected or good. Providing purge and remove from folder to general users has always been risky for all but draft items. The suggested behavior now is to instead allow users to move items/folders to a location under //Folders which will remove them from the site, these can be then manually/automatically removed later by an administrator. The latest version of the PSOTookit provides a Trash scheduled task that can be used to automatically remove these items after a period of time. This also allows an entire folder structure to be restored if in error.

The submenu slot on a navon is still used for ordering of navigation components, but the decision we have made is that adding and removing from the submenu slot manually in most cases should not be required by users and is very dangerous. Often the need to do this arises from the need to fix up some of the above issues, so we have provided a way to both prevent and automatically fix up the navigation.

Some users may be using navigation in a different way that may require manual modification of this slot and we will provide a patch that will allow you to disable this restriction if there is no good alternative approach. Most customers should look at why they need to add and remove from this slot and see if the recommended approaches to their functionality are sufficient for there needs as the benefit of increased system consistency should not be overlooked.

Here are some use cases why you may currently be editing this slot and ways you should be doing this.

1) I have a Navon that is not correctly linked to the navon in its parent folder, I need to fix this up.
Whenever a folder is now moved any inconsistencies with the navigation structure are automatically resolved. Although we currently do not have a tool to scan and fixup the whole tree, if you move a folder to a different location and move it back, the item will be correctly linked to its folder parent.

2) I have an images folder that is showing up in my navigation unless I remove it from the submenu slot.
Folder structures that contain only items that do not have any publishable templates using navigation do not require any Navon items. This would be folder structures containing only images, documents, or items that are used as snippets only e.g. briefs. Normally when a new folder is created or a NavTree item is initially created the whole folder structure is populated with navons including any images folder. The process of removing (purge) these navons (remember remove from folder will only orphan them) can be difficult for a deep folder structure. 7.1. adds a “Purge Navigation” menu action which can be used for this purpose. It is recommended that this only be used by a few System level administrators as it will totally wipe away Navon items and any information stored in them, day to day usage of this function should not normally be required.

3) I have a folder That I do not want to appear in my top level site navigation/ left nav so I used to remove it from the submenu slot.
Doing this before would have caused issues for any page under the folder being removed so was a bad idea. The way to provide this functionality is to put the removal logic in the navigation template itself. Often when this functionality is requested the user does not want the item totally removed from the navigation i.e. they still want a working breadcrumb but they want it to be removed from a specific navigation template, e.g. top nav, left nav etc. Ways of providing this is to provide some indication on the navon item of the intended behavior this could be a “hide from left nav” checkbox or could simply be adding something like [hidden] to the start of the Navon sys_title. This can be picked up by the appropriate navigation template and maintains the hierarchal structure of the navigation. You can use $rx.nav.findProperty(node,propertyname) to see if any parent property has a value selected.

4) My users want to have full control over the left navigation and add links between sections, external links etc.
One way of doing this is by creating a subfolder for the entry in the left nav you want to be to a different page or external link. You can then just set the landing page of that new navon to page anywhere in the system, or to an external link item. This does require the creation of that folder though, landing pages can link anywhere.

If even more control is required by the user it is suggested that a separate slot for left nav etc. is created in the Navon. The left nav template code can then see if the user has placed anything in that slot, if they have the contents of the slot would be used instead of the regular mechanism to get the navigation children. See http://forum.percussion.com/showthread.php?2562-Macros-for-propagating-slot-contents-from-Navons

I hope this helps resolve some confusion and will result in a lot less navigation issues and orphaned items. Please respond with any ways you are using navigation that would be inconsistent with this behavior.

I am all for consistency, but currently we allow our end users a lot of flexibility in terms of navigation and what is allowed in the submenu slot…which includes the ability to shoot themselves in the foot. For example, they can add pages (ie. a specific item) directly in the navigation submenu, along with briefs.

Why pages? So that they don’t have to create a folder to house one page to appear in the navigation. (ie. you would need to create a folder, then a navon (if it isn’t created automatically…which in our system we don’t do that), then add the particular page to the navon landing page, and then add that navon to the parent submenu…whereas right now, you can just add the item instead of having to create the superfluous content).

Why briefs? If they wanted a promotional item (or a logo) to appear in the navigation area, an image in a brief along with supporting text if they wanted would accomplish that.

We definitely would like a patch to allow end users (authors / editors) to edit the submenu, as just having another slot in the navon will not allow them to edit the order of the items in the navigation.

I appreciate the step towards making navigation automated, but unfortunately in our case, we like having control over the navigation.

Let me know if you need further information on how we have our navigation setup.

Thanks!
Jit

We’re in the same boat as Jit.

Yes we will definitely be adding in the ability to turn off this restriction. The problem we have is the way you are using this slot is very difficult to support from both your side and our side. It is just by chance that the slot works to allow you to add more than just navon items into the slot and the system has not been built specifically to handle this. The tree structure of the Navons is very important and so many technical support issues come about because of this. Of course we do not want to restrict the functionality you want and are currently using and the system should at a minimum be configurable to work how you are currently. Here is one idea that I have been thinking about that may solve your issue if implemented and may improve the usability, it would be good to get your feedback.

We implement a new slot finder, (or parameter to existing relationship slot finder). If this slot finder is used for a slot it will check when items are added and removed from a folder and will automatically add and remove those items from the slot. The setup will be based upon the allowed content in the slot, if there is more than one template allowed for a particular type the first one will be used.
Once an item has automatically been added to a slot the user can freely reorder the items and change the template used if required to a different available template. Any items manually removed from the slot will stay removed unless the actual item was moved out of the folder and back in again. Any items manually added to the slot (e.g. from a different folder) will remain in the slot and not be touched. Automatically added items will be added to the bottom of the slot but can be manually reordered and ordering will not be touched. Content types can be set up to say if they are automatically added to items in the current folder or the parent folder (e.g. a navon added to a folder will add to the nav_submenu of the parent folder) or ( a generic item added to a folder will automatically add to the landing page slot of the current folder.

This functionality could essentially replace the automatic behavior of nav_submenu, but would allow us to have a separate user modifiable submenu slot that is updated in the same way. This second slot could be used exactly as you are at the moment for nav_submenu and be modified directly by the users with the ability to freely add and remove navons/ external links/ other pages/ links to other navon items, that would affect the display of navigation items in the current section without affecting the actual nav_submenu slot and the navigation heirarchy based upon the folder structure that goes with it. It would also provide additional functionality like the ability to automatically populate the landing page slot, or even things like automatically adding items to an index page without needing an autoslot (e.g. the automatically populated slot would not need to be on a Navon)

That seems to be an interesting proposal, but not really a good solution for our implementation. The issue that I have with it is the “opt-out” portion. If I read it correctly, any item that is added to a folder will automatically be added to the “submenu” (or whatever you want to call it) slot. This means that any item an end user doesn’t want, they will have to edit the slot and remove it. A lot of our users create pages that are not in navigation and having the slot automatically add those items in creates additional work (for them to remove the items).

Currently the system behaves in a consistent manner (for us at least). Anything that you want in a slot, be it navigation or a regular slot, you have to put it in there. Navigation slots (for us) acts like regular slots in terms of what can go in (ie. we specify the allowed content types and templates) and how people order items (so it is pretty easy for us to maintain).

So, now that I have voiced my concerns, what would I do to address all the problems with navigation? If I were Percussion and had a couple of developers on hand (we can all dream right?), I would build an app to manage navigation separate from the content you put in the CMS (think of it as a macro you can call on the template or a variable that you can reference). You can tie the variable to the folder in which a content item resides in (so a variable such as “$currentnav” would reference the nav upto the folder). The application portion of it would display just the navigation and give you all the benefits of being automatic along with ordering (make it all ajaxy and web 2.0 so that people can wow over it). Why would I build a separate app for this? Because navigation is special anyway. Currently it seems like it was built as an after thought and while you are currently trying to fix it and prevent people from breaking navigation easily, I don’t think that restricting the content type / slot in the current implementation is the way to go (i.e. scrap it and build it completely separate from the content people put in… it looks like it is headed there anyway). Yes, it would probably be a lot of work, but I have full faith on the developers at Percussion.

Just my 2 cents :). Thanks.

[QUOTE=jitendra;19888]That seems to be an interesting proposal, but not really a good solution for our implementation. The issue that I have with it is the “opt-out” portion. If I read it correctly, any item that is added to a folder will automatically be added to the “submenu” (or whatever you want to call it) slot. This means that any item an end user doesn’t want, they will have to edit the slot and remove it. A lot of our users create pages that are not in navigation and having the slot automatically add those items in creates additional work (for them to remove the items).

Currently the system behaves in a consistent manner (for us at least). Anything that you want in a slot, be it navigation or a regular slot, you have to put it in there. Navigation slots (for us) acts like regular slots in terms of what can go in (ie. we specify the allowed content types and templates) and how people order items (so it is pretty easy for us to maintain).

So, now that I have voiced my concerns, what would I do to address all the problems with navigation? If I were Percussion and had a couple of developers on hand (we can all dream right?), I would build an app to manage navigation separate from the content you put in the CMS (think of it as a macro you can call on the template or a variable that you can reference). You can tie the variable to the folder in which a content item resides in (so a variable such as “$currentnav” would reference the nav upto the folder). The application portion of it would display just the navigation and give you all the benefits of being automatic along with ordering (make it all ajaxy and web 2.0 so that people can wow over it). Why would I build a separate app for this? Because navigation is special anyway. Currently it seems like it was built as an after thought and while you are currently trying to fix it and prevent people from breaking navigation easily, I don’t think that restricting the content type / slot in the current implementation is the way to go (i.e. scrap it and build it completely separate from the content people put in… it looks like it is headed there anyway). Yes, it would probably be a lot of work, but I have full faith on the developers at Percussion.

Just my 2 cents :). Thanks.[/QUOTE]

I think you did misunderstand slightly. We would not automatically put every item put into a folder into a slot. This would be configurable on the slot itself which items would be added and where. By default we would setup the nav_submenu slot to add child navon items only; essentially his would make it work exactly the same as the current nav_submenu functionality. What I am suggesting is we have a second slot which is set up in exactly the same way. When you create a subfolder and a new navon is created in that folder it is added to nav_submenu and the new slot (although you may choose to not automatically put anything in this slot) the difference being that this second slot would be fully user editable, the child navon items could be removed, navon items from totally different folders could be added and other link types, external/internal could be manually added and rearranged by the user as you are currently with the main nav_submenu slot. The navon_submenu slot would not be editable to maintain the mapping to the folder structure, this makes sure that every navon has only one and always one direct parent without this the $nav.root and other navigation functions can provide inconsistent and be broken. The left, top nav etc. list of links would be fed though directly from the new second slot, the $nav.root and $nav.self would find the correct navon based upon the regular submen_slot, but the links would be pulled from this second slot (it is essentially a regular slot). I think this may provide the customizable and independent navigation functionality you are asking for in the last paragraph, although I understand it does not have a nice ajaxy ui to go with it. Using this mechanism it may be possible though to make the navigation editable directly in active assembly though as the new slot works as a regular slot.

Generally we find that customers don’t want a navigation structure totally separate than the folder structure this can add extra complexity, confusion and management, but definately do want to be able to add cross links between sections, external links, reorder, remove items. Any new sections could be automatically added though saving the user the need to search and find the relevant items every time, e.g. they can rely on some sensible defaults and modify if required. Using the described mechanism it would even be possible to have a separate slot for top nav and left nav if required allowing a user to remove a link from the top nav but having this choice independent to the contents of the left nav.

Steve,

What is the impact of the new property in 7.2 related to this?

“NavSubmenu Slot
To change the out of box behavior of the NavSubmenu slot and make it editable, a new property
allowNavonSlotEdit has been introduced. To make the NavSubmenu slot editable, edit the edit the
server.properties file in [CMS-root]/rxconfig/Sever
Set allowNavonSlotEdit = true”

If I turn this on to allow the sub menu slot to be edited are there any potential negative side effects?

Thanks,

-nate