Details

    • Type: Story
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.0.0-b1
    • Component/s: None
    • Labels:
      None

      Description

      We need to have a way of customizing the navigation for both the client nav and the admin nav. We need to do this in a way that automatically replicates the current navigation.

      Database

      Create new tables:

      • actions
        • id INT(10) UNSIGNED NOT NULL AUTOINCREMENT
        • location ENUM('nav_client', 'nav_staff','nav_public', 'widget_client_home', 'widget_staff_home', 'widget_staff_client', 'widget_staff_billing', 'action_staff_client') NOT NULL DEFAULT 'nav_staff',
        • url VARCHAR(255) NOT NULL
        • name VARCHAR(128) NOT NULL
        • options TEXT DEFAULT NULL
        • company_id INT(10) UNSIGNED NOT NULL
        • plugin_id INT(10) UNSIGNED NULL DEFAULT NULL
        • enabled TINYINT(1) UNSIGNED NOT NULL DEFAULT 1
        • editable TINYINT(1) UNSIGNED NOT NULL DEFAULT 1
        • primary(id)
        • unique(url, location, company_id)
        • index(company_id)
        • index(location)
        • index(plugin_id)
        • index(enabled)
        • index(editable)
      • navigation_items
        • id INT(10) UNSIGNED NOT NULL AUTOINCREMENT
        • action_id INT(10) UNSIGNED NOT NULL
        • order SMALLINT(5) UNSIGNED NOT NULL
        • parent_id INT(10) UNSIGNED NULL DEFAULT NULL
        • primary(id)
        • index(action_id)
        • index(parent_id)

      Remove the `plugin_actions` table

      Migrations

      Create migrations to:

      • Add new tables
      • Move plugin actions to the new tables
        • Actions should be created for each plugin action AND their sub items
        • Navigation items should be created should be created for each plugin nav_primary_staff and nav_primary_client action that is enabled and their subitems
        • Navigation items should be created for each nav_secondary_staff and nav_secondary_client plugin action
      • Move core nav items fetched from the navigation model to the new tables
        • Actions should be created for each primary nav item AND their sub items (public/client/staff)
        • Navigation items should be created should be created for each primary nav item and their subitems (public/client/staff)
      • Remove the `plugin_actions` table

      Models

      • Add Actions model
      • Update Navigation model to pull in navigation items from the database
      • Update the plugin manager to add/remove/update actions and nav items
      • Make sure all action display locations now pull from the action or navigation models

      Action Creation Interface

      • Add an "Actions" settings nav item under Look and Feel
      • Add action list page
        • List only editable core (nav) actions here
        • Show name and url
      • Add an Add Action page
        • Fields include a name text field, uri text field, and location select
        • Limit location to the nav types
      • Add an identical Edit Action page
        • Make sure this page will redirect for uneditable actions

      "Navigation" Nav Buliding Interface

      • Tabs for client nav and admin nav
      • Available actions list that shows all actions available to be added to the navigation
        • There should be an "Add" button on each row that adds the action as a nav item at the bottom of the navigation
      • Drag and drop interface for building and organizing navigation with indentation for subitems
        • There should be a "Remove" button on each row to remove the nav item from the navigation
        • We should have some way of marking a nav item as a subitem which would make it appear indented
          • A checkbox? A clickable icon?
          • In the back end we can auto assign these sub items to the most recently seen primary nav item
      • It would be nice to have some kind of preview of the navigation, but it is not essential

      Other

        Issue Links

          Activity

            People

            • Assignee:
              jonathan Jonathan Reissmueller
              Reporter:
              jonathan Jonathan Reissmueller
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Fix Release Date:
                23/Dec/20

                Time Tracking

                Estimated:
                Original Estimate - 0 minutes
                0m
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 week, 1 day, 4 hours
                1w 1d 4h

                  Agile