I have 16 screens which have the same primary navigation, which changes 2-4 times a year. The changes are subtle but I have to change it on all 16 screens.
My workflow is as follows, and I wonder if there's better way. It only takes about 5-10 minutes to change them all, but it just feels like frustrating stupid work to me, and I feel like there's got to be a better way. It's definitely worth it for me to spend that 5-10 minutes then to hid the navigation in a menu button since the users click on these buttons hundreds of times a day.
What I did was put them together in a group. Hidden under the blue bar is a big red message if I'm on the development server, so I don't get confused about which is open.
Then I removed navigation from any "rarely visited" pages (such as settings or staff lists) and only have the logo which links back to the Home Screen to keep things simple (I used to have over 30 screens with navigation when I started this project).
Then I made a layout folder called "Screens With Navigation" and I click through them one at a time, deleting the old navigation and pasting in the new one and then just pushing it up to the top left corner, so the alignment is correct.
The slowest part of the process is manually going to the next layout in the list, so if there's some way to just "go to next layout" that would be super helpful.
I've considered writing a script which basically finds all layouts with the word "_Nav" in their name and opening them all at once, and then I can just copy-paste... it feels clunky but it's one idea. I'm also not sure about the ROI on that so it's probably not efficient, but I hate the busy work and procrastinate it all the time... lol
We have 3 buttons on our navigation that change from time to time. A start menu, Reports, and prints. We used to have them open up a pop over but we got sick of the same thing you did so now we have them open in a new window. This lets us make changes with out needing to update all the layouts.
It has some downsides but it a lot better then fearing to make an update.
I recently built something for the layout menu part of such a toolbar: A centrally configurable layout menu, which can be configured and controlled via custom functions and a dispatcher script.
I uploaded a preliminary version of this file in a recent thread. Here is the current file (with explanations inside), which I now actually use as a copy-paste basis for new and existing solutions:
It's the sort of task that might be worth writing a macro for. Supply it with a list of layouts, go to layout, click at x,y, delete, paste, repeat.
I didn't write a macro yesterday when I did this for about thirty layouts. I made the changes, grouped all of the objects and added a handle ( a coloured rectangle sized to be the same height as the other objects positioned off the visible layout) to the group. Almost all of these layouts were grouped together so I simply used keyboard commands to go to next layout. Click near 0,0. ⌘-X, ⌘-P, Ctrl-⌘->.
Filemaker tries to place the middle of pasted object at the click point. When it can't it adjusts, so in this case the objects always arrive at 0,0. If I make a mistake, its easy to grab the "handle" and position correctly.
But more importantly... how do you go to the next layout wit ha keyboard? That would be great. You wrote:
Ctrl-⌘->
I tried Control+command+ right arrow, and plus > and I even added shift in case that matters but none of it changed the layout in browse or in layout mode...
You don't mention what type of change is required; if there's a consistent pattern to the change; and if there's something that triggers the need for change (e.g. a calendar date, an event or other condition, etc.), @JasonMark .
If there's an identifiable pattern there's a chance the button action script(s) can be written to effect the changes (via carefully considered calculations via Functions, custom or otherwise). Or a utility script can be run to implement the navigation changes by setting fields in a lookup/reference table for the current needs. Maybe employing an input card to insert specifics if needed, in the case of not being able to predict in advance.
Alternatively, if the changes are very limited and consistent in nature, one could stack the versions of the button group and hide the ones not appropriate for the current needs (by script). Hide when... can have an impact on performance is some cases, so one would want to consider that as well if going this route.
My point is that this sounds like something I'd eventually want to solve programmatically.
Scripting changes are rare, but fairly easy. Most likely it's adding a button or changing a name for it. For example, they have different subsets of students, and every year they tweak those (get rid of one, split another into two, change the name of one). They also hired a counselor and a career person recently so they needed their own buttons, and as they worked out their roles some of those buttons turned into popover buttons with multiple options. In another case referrals was a dialog box with 3 options, but they now have 5 premade searches so it turned into a popover. In other cases they need different icons.
It's really about matching the needs of the navigation to the workflow of the people using it day-in and day-out.
Got it! That's what I was looking for. For some reason control-up and down weren't working, so I set a custom keyboard mapping for it and it now works. That removes the biggest pain from the process for me!
That's cool. I don't think that will work for my main menu though because there are so many icons and tweaks to how it's displayed and popovers in random places. The change I made yesterday actually changed the width of a button because they changed the name to have more letters and the old button wrapped.
@JasonMark
Well, for icons you could use a symbol font.
For the two blocks of button sets with different width you could use two of my sets. One for the block with wider buttons and one for the smaller buttons.
At the moment I have 3 such sets in my demo file. In a copy of the file you could rename all custom functions of a set and the name of the button bar itself and you have to adjust the namespace in the namespace custom function. Then you are done and have another set ready for copy paste.
Popover buttons I will make available.* I'm currently working on this. In such a popover button you could use another of these sets or you use a virtual list technique to be able to adjust for your needs.
My button bar contains 15 button segments and 15 counter segments for the buttons. I'll add another 15 popover segments and adjust the button custom functions: If the CF is set to "isPopoverButton" then the normal button will be hidden and the popover button is shown else the normal button is displayed and the popover button is hidden.
[Edit:] There's a custom function (Namespace)__TotalNrOfSegmentsToBeDisplayed in my sets that you can use to control the button width.
You can control formatting conditions and hide conditions and you can set ScriptParameters within the CF of a button.
@mipiano we tend to use custom icons. It's a cool solution but considering staff use this so much I'd rather things be clear even if I have to do some busy work to update the navigation, than have it only "OK. There are a lot of sub-buttons and popovers and such with notes and layout. Thanks anyway.
@rivet That's a great way to do it! I've only used HTML 3-4 times in the past 15 years so that's probably not the right solution for me, but that's wicked smart. Probably loads very fast also, yo can just pass in permissions and the right things will be hidden. One thing that could get messy is popover buttons need to stay within the web view, but you could make them work on hover which is nice from a UI point of view.
so we have an HTML menu that slides in with a button and we can have different menus per privilege set and also change it easily adding new layouts etc.
I would like to throw in a solution with a CardWindow that I use in one of my solutions. This method is not only very easy to maintain, but even works in multi-file solutions.
The special thing about it is that the navigation menu opens automatically using a mouse-over effect. The MBS plugin is required for this. Without the MBS plugin, an additional click on the button is required. The mouse-over effect has been integrated so that only one and not two clicks are required for a navigation process.
The solution was designed with Connector-Selector Model. Nowadays, I would no longer use this model, as it eventually becomes too slow. However, it would also be easy to set up the navigation without the SC model.
In addition, the example file contains a simple role management, which controls the available navigation points. Have fun with it! CardNavigation TG.fmp12 (580 KB)