2019

aug

21

Av

För ett halvår sedan skrev jag om hamburgarmenyer som ett bra sätt att byta mellan layouter eller köra olika manus. Vi har fått frågor om det inte går att göra menyvalen dynamiska, dvs. de är olika beroende på vem som är inloggad. Det går såklart! Och är dessutom inte så svårt. Jag fortsätter med samma exempel och utökar det med en dynamisk meny i form av en portal istället för knappraden som jag använde då.

Det behövs en ny tabell i databasen som innehåller en post för varje menyval. Jag har utökat exempeldatabasen med tabellen Menyval som har 4 fält.

Fältet Namn är det som kommer att visas i hamburgarmenyn, fältet Layoutnamn innehåller namnet på den layout som menyvalet ska gå till, fältet Behörighet anger om menyvalet ska vara tillgängligt för de användare med begränsad behörighet och fältet Sortering anger i vilken ordning menyvalen ska visas i menyn. Menyvalen kommer att visas i stigande nummerordning.

 

 

Det går att lägga till poster i tabellen, ändra namn, layoutnamn eller sorteringsordning. Alla ändringar du gör i den här tabellen påverkar direkt hamburgarmenyn nästa gång den visas.

Det behövs inga relationer till den nya tabellen i och med att den visas i ett eget kortfönster.

Kortfönstret med hamburgarmenyn visar nu innehållet i tabellen Menyval. Layouten är annorlunda än i förra exemplet, jag använder nu den nya funktionen master/detail från FileMaker 17 för att visa tabellinnehållet i en portal och placerar fältet Namn i portalen som består av en enda rad. Genom att göra layoutens huvuddel lika hög som portalen och ställa in så att portalen automatiskt ändrar storlek beroende på fönsterstorleken kommer portalen visas lika hög som fönstret. Markera portalen och välj storleksinställning i Granskaren enligt bilden nedan.

 

Jag lägger till ett indrag på 30 px för innehållet i fältet Namn så att det inte börjar längst till vänster, även det gör jag i Granskaren. Fältet Namn ska fylla hela portalen, texten få en blå färg och jag ställer också in så att fältbakgrunden blir ljusblå när användaren ”hovrar” över fältet. Layouten som ska visas i kortfönstret ser nu ut så här:

 

Jag gör fältet Namn till en knapp som utför manuset ”Meny: Gå till layoutnamn” och anger fältet Layoutnamn som manus-parameter enligt bilden nedan.

 

I manuset använder jag manussteget ”Gå till layout [Get (Scriptparameter)]”. Jag kunde också använt ”Utför script enligt namn” för att utföra ett manus istället för att gå till en layout.

På den ”Första” layouten har jag lagt in en knapp som loggar in med en Begränsad användare, eller Admin med full behörighet. När du är inloggad som en Begränsad användare kan du endast se de menyval som är markerade ”Visa för Begränsad” i tabellen Menyval. Användaren Admin kan se alla menyvalen.

I bilden ovan visas menyn till vänster för användaren Admin medan bilden till höger visas för användaren Begränsad. Manuset ”Meny: Öppna” som körs när du klickar på symbolen för hamburgarmenyn öppnar först kortfönstret, visar sedan alla posterna i tabellen Menyval om användaren är Admin, eller söker fram de poster som användaren Begränsad ska få se, innan posterna sorteras i nummerordning och visas i portalen.

Manuset ser ut så här:

 

Ladda ner exempeldatabas (kräver FileMaker 17 eller senare): Dynamisk_Hamburgarmeny.fmp12

Skriv en kommentar

  • (will not be published)

Läs också: