Card Sidebar Navigation

FileMaker 16's new Card Windows have opened the flood gates for all kinds of new methods for presenting information. Not least of which are your common dialogs and wizards. But, what about using them for navigation? Why not?

In fact, you'll find so many benefits from using a Card Window, for the purpose of navigation, you may think it makes little sense to use anything else. Especially, when you want the navigation to both hide and reveal as needed.

In this video, we walk through a wonderful technique of using a Card Window for the purpose of sidebar navigation. Not only does it blend in well with the user interface but it retains which menus were collapsed and which were expanded. It works in both Form view and List view. Overall, it's one of the best methods you can choose for solution navigation if you're using FileMaker 16 or later.

AttachmentSize
CardSidebarNavigation.zip1.67 MB

Comments

Just this technique alone is worth a subscription to the magazine.

Well done Matt and thx

Craig

Hi Matt,

In the video you have created two menus "New menu" and "Another sub" but they don't show in the Menu window. I can find these two new menus in Sidebar Layout bot not in Menu window.

Chunwei

I, too, tried to create a menu, but it does not appear in menu window
thank you

I uploaded the file to my server for testing.
i tried to add a main and a submenue like in the video but when i re-open the menu i don´t see the new created ones.
i guess it has something to do with the privilegeSet Variable. That is where the new created entries got filtered out.

Is there a way to do this same concept or close inside of a portal that is on the layout? Just curious. Just looking just in case you might wanna do this on a layout that has actions that is only available for that layout that changes layout to layout.

Mark Johnson
Aroma Impressions
mark@aromaimpressions.com

The card window is just another window above the main window. So, if a portal is on the layout and consumes the whole of the layout size, then you can still use this method. If you need it to appear in just a portion of the portal you can do that too. Just get the dimensions of the portal by using GetLayoutObjectAttribute().

-- Matt Petrowsky - ISO FileMaker Magazine Editor

Great use of "cards"!
The two level menu implemented with a very simple "find" is very useful!
the user privilege gives a more flexible use. For privileges I use a "users" table with a set of checkbox that enable/disable every area of the database. So the "Privilege" field in the menu page is not suitable to ne. My home page has a set of menubar so I simply hide the button. In this context I should omit the record of the menu in a more complex way. But i think i'll do all the adjustments to implement this tecniche in my present and future developments.
Thank You.

Great solution!
I made an extended version with an
- edit Layout
- switch to change the menu thats just one is open
- surpress menu if WindowName is not in List, additional field
- toggle the edit mode
- auto enter [FullAccess]
- subsort
and some other small additions.

works just GREAT! Thanks to Matt

If someone wants the 'extended' Version, just ask....

Best regards

Urs

Re: "I made an extended version with an - edit Layout" & "If someone wants the 'extended' Version, just ask...."

Hi I'm currently working to implement an - edit layout so would be great get a copy of your extended version. Thank you - Steve,

Steve

Hi Urs
Very interested in your version.
Would you mind sending it to wwwlog@me.com?
Thanks and cheers
Martin

Would it be possible to get a copy of your version?
Also in it do you have an example on how the dispatch script should look like since I do not know how to do it.

Thanks

This is exactly what I was looking for Matt, In fact I started to create exactly this, before I stopped myself and figured I should take a minute to search the web. Thank you so much for saving me all this time.

In fact you inspired me to take it further in the video, and I wanted to share with everyone how I managed to capture all the "id" for the dispatcher script you mentioned at the end.

in Edit mode I duplicated the privilegeSets field (on the slider tab 2 -- panel.edit)
I pointed it to the "id" field maintaining all the formatting that you put in -- for reason you mention in the video
I converted that text field to a button
I am fortunate that I own a copy of the MBS plugin
I used a single step using the MBS "Clipboard.SetText" function
----see below---
MBS [ Select ; Function: ("Clipboard.SetText") ; P1: Menu::id ; P2: ; P3: ; P4: ]
---end---thats what the step looks like when I was finished

Lastly I set some condition formatting on the whole slider tab
---
Menu::id_Menu ="0"
---
and made the fill colour black

So now when I am creating the dispatcher text all I need to do is have a window open to the sidebar layout.
Any time I need to reference the id number all I need to do is click on the new id button and it copies to my clipboard. I than paste the id into the dispatcher script where ever I need it. I can than work between the script window and the sidebar layout, capturing the id every time I click on the necessary id field that I need to capture

The conditional formatting is simply so I can see if the id I am capturing is not a main header.

Now some of you might say "Nate there is a simpler way", but I didn't want to copy and paste the whole layout record into a text tool (sublime text for example) and than have to highlight and copy only the record id out, and than have to go back to the script editor and paste the value in. Yes you can do that, and maybe you keep all your text files you generate, but I would sooner just do the least amount of keystrokes.... But I am also just learning, so if there is a better way I would love to know it

Nate

Hi Matt,

great starting point for a navigation setup. Was about to rewrite the navigation in my own solutions but will now use your technique with some ad ons.

Quick Tip for simple navigation use.

Add a field called "navLayoutID" where you store the native Filemaker Layout ID

Instaed of a dispatcher script you can just add those three lines of code and navigate to the desired layout.

Set Variable [$layoutID; Value:Menu::navLayoutID]
Close Window [Current Window]
Go to Layout [$layoutID]

Cheers
Martin

I do use internal layout ids in my own solutions all the time. With technique files I tend to avoid putting in to many different abstract methods for doing things, but yes, I would target a layout based on the layout number using it's layout id as the reference.

-- Matt Petrowsky - ISO FileMaker Magazine Editor

Thank you for this! There are days I would trade in my lawyer hat for a developer hat. Concinnitous solutions like this are inspiring.

I wonder, if this could be suitable for navigations with more than just one level of subfolders. I would need 4 to 5 of them to display a certain tree of document folders.
Any idea?

Best, Andy

Andreas Franz, DiVisual® GmbH, Tools for fine art and cultural heritage documentation

very good article.
how can i link when a root menu has no child?

Hi Matt,
I could delete a menu line if I do not want to use it? I don't want keeping it empty. Thank you

Hi Matt
From what I understand of the solution it uses a table in FileMaker and not a virtual list so it will not work for multiple users. Is that correct?

Many thanks
Andy

Hi Matt,
First of all a huge "thank you" for all you do, your techniques have taught me so much and constantly evolve the way I design my file when I see what is possible.

With this technique, when you select the edit view the privilege set is obscured and you are unable to enter data in this and therefore the menus don't show when you close. (As they aren't in a privilege set)

Also I'd recommended having the privilege set to auto enter as "Full Access" (which can be modified later) otherwise if you forget to populate this and close the edit view you can't see the menu you just created.

Thanks again.