Код: Выделить всё
> Здесь все просто: у нас есть элементы для построения системы навигации - Buttorn Bar Tool
Есть Navigation Part в Layout. Navigation Part надо создавать на каждом Layout, изменять ее размер, копировать в точное местро на нее Button Bar, выделять активный сегмент (вручную или автоматом). Если добавили еще одну кнопку в Button Bar - надо пройтись по всем Layout и поменять все там.
Navigation Part имеет удобное свойство для организации навигации -- она не изменяет свой масштаб. Если изменить ее поведение в FileMaker так, что все, что на на ней размещено, показывается на всех Layout с Navigation Part, то создавать сквозную навигацию станет значительно проще. Достаточно будет разместить Buttor Bar в Navigation Part и он автоматически продублируется в нужных Layout
Так сделайте все это средствами файлмейкера.
Вы можете сделать прозрачный баттон-бар на максимальное количество кнопок. Допустим, их будет 15
Надписи в баттон-барах вычисляются, вы можете вычислять их на лету.
0) кнопки в баттон-барах вы нумеруете от 1 до 15 (имя объекта).
1) Вам потребуется таблица, в которой вы храните список ВСЕХ макетов, их русское название (для кнопки, для навигации), LayoutID, параметры доступа.
2) вы записываете на старте в глобальную переменную в JSON список названий нужных для глобальной навигации макетов в формате номер кнопки - название кнопки - ид макета.
А второй JSON - инверсия первого: LayoutID - номер по списку.
3) по номеру кнопки вычисляется ее название. Вы делаете это для всех 15 кнопок. Если в вашем списке кнопок глобальной навигации всего 6 пунктов, то отобразятся названия 6 кнопок, остальные не вычислятся.
4) Активная кнопка баттон-бара вычисляется из второго JSON: вычисляете LayuotID макета, получаете по нему порядковый номер в списке и если этот номер совпадает с именем кнопки баттон-бара, она становится "активной".
5) Клик на кнопку обрабатываете одним скриптом. Параметр - порядковый номер кнопки. Из JSON вы получите по номеру кнопки LayoutID. Потом кастом функцией ( см. fmteam.ru) получаете актуальный Layout number и переходите на этот макет по номеру макета. В этот скрипт можно вписать раздел, по которому вы проверяете привилегии пользователя на доступ к макету.
JSON можно генерировать не только на старте, но и на лету. Например, при переходе на макет, которого нет в списке глобальной навигации, вы этот макет аккуратно в JSON дописываете и соответствующая ему кнопка появляется в глобальном меню. Можно уйти с этого макета, а потом вернуться к нему снова уже через кнопку глобального меню. Если у вас таким образом дописалось 15 кнопок, а вы переходите на 16-й уникальный макет, то перезаписываете 15 кнопку. Любые правила, и все это на лету
У меня в информационной системе несколько десятков страниц и пользователи с различными ролями. Для каждой роли предусмотрено собственное глобальное меню. Человек входит в систему и видит только те разделы, которые нужны ему в его работе ( а все прочие страницы видит на стартовой странице, при желании может перейти куда ему нужно).
Кроме того, сделана возможность выбрать любое глобальное меню из списка. Можно выбрать стандартное меню, минимальное меню, меню для определенной роли, индивидуальное (личное) меню. Короче, можно переключаться, все динамически меняется.
Так что "для творчества все условия созданы"