Добавление разрешений в Flex 4 UI без состояний - PullRequest
0 голосов
/ 23 августа 2010

Я работаю во Flex 4.1, и у меня есть основная панель навигации и панель просмотра. Пользователь входит в приложение и может только тогда видеть, какие вкладки доступны для его уровня пользователя.

Я стараюсь как можно больше придерживаться MXML, поскольку он хорошо работает с фреймворком. Но я оцепенел, думая об этом. Каковы общие практики для этого?

К вашему сведению: пользовательский уровень немного сложен для состояний. Есть много вариантов, способ для многих, чтобы удобно делать ж / состояния и группы состояний.

Шимпанзе - довольно классная библиотека для тех, кто заинтересован. Он немного староват, и, похоже, нет особой мотивации для его расширения за пределы UIComponents. Так что для моих целей это не подойдет.

Опять же, что вы делаете для настройки этих систем?

UPDATE: Я должен был пойти на компромисс, но на самом деле все получилось довольно хорошо. Вместо деструктивного наложения разрешений (сначала все доступно, а затем удаляются элементы), система теперь работает конструктивно. Вот пример:

[Bindable]
public var managePage:ManagePage;
[Bindable]
public var reportPage:ReportPage;

    ...

switch(permission)
{
    case "create":
        navigatorContent.label = "Manage";
        navigatorContent.addElement(managePage);
        viewStack.addElementAt(navigatorContent,1);
            break;
    case "read":
        navigatorContent.label = "Report";
        navigatorContent.addElement(reportPage);
        viewStack.addElementAt(navigatorContent,2);
            break;
}

Очевидно, это только для добавления элементов, но удалить их так же просто. Это решение оставляет мне все, что я искал, поэтому я счастлив.

Ответы [ 2 ]

1 голос
/ 23 августа 2010

Для всех намерений и целей вы должны создать свою собственную платформу для решения вопросов разрешения / безопасности вашего приложения. Компонент TabBar может принимать dataProvider, поэтому просто создайте его на основе имени пользователя; и это простой способ изменить навигацию в зависимости от пользователя.

0 голосов
/ 23 августа 2010

Итак, более сложное окончательное решение:

[Bindable]
protected var managePageView:NavigatorContent;
[Bindable]
protected var managePage:ManagePage;
[Bindable]
protected var reportPageView:NavigatorContent;
[Bindable]
protected var reportPage:ReportPage;

    ...

public function permissionCreate(permission:String):void
{
    switch(permission)
    {
        case "create":
            managePageView.label = "Manage";
            managePageView.addElement(managePage);
            viewStack.addElementAt(managePageView,1);
                break;
        case "read":
            reportPageView.label = "Report";
            reportPageView.addElement(reportPage);
            viewStack.addElementAt(reportPageView,2);
                break;
    }
}
public function permissionRemove(permission:String):void
{
    switch(permission)
    {
        case "create":
            managePageView.removeElement(managePage);
            viewStack.removeElementAt(managePageView,1);
                break;
        case "read":
            reportPageView.removeElement(reportPage);
            viewStack.removeElementAt(reportPageView,2);
                break;
    }
}

Я собираюсь превратить это в библиотеку в следующем месяце или около того.

...