Navigation (Seitenleiste)

Struktur

Eigene Navigationspunkte werden im Ordner Components eines Moduls angelegt. Alle Dateien, die für die Funktionsfähigkeit der Produkte zwingend erforderlich sind, sind unten-stehend rot hervorgehoben.

  • Components
    • Navigation.php

Positionen

$tab gibt an, in welchem Tab der Seitenleiste die Navigationspunkte positioniert werden. Die nachstehenden Positionen stehen zur Verfügung. Ein Beispiel für Tab-gebundene Navigationspunkte finden Sie im Beispielcode am Ende der Seite.

Position Adminbereich Kundenbereich
home Ja Ja
hosting Ja Ja
notifications Ja Ja
settings Ja Nein

Inhalte

Trenner

Trenner werden genutzt, um einzelne Abschnitte der Navigation zu trennen und zu beschriften.

$context->add([
    "type" => "separator",
    "text" => "Sample Separator",
]);
$context->add([
    "type" => "link",
    "text" => "Sample",
    "link" => Url::getUri("admin/core/sample"),
]);

Dropdown

Ein Dropdown ist eine Sub-Navigation. Er kann alle o.g. Inhalte oder auch weitere Dropdowns enthalten.

$context->add([
    "type" => "dropdown",
    "icon" => "fa fa-square",
    "text" => "Core",
    "link" => "#",
    "data" => [
        [
            "type" => "link",
            "text" => "Users",
            "link" => Url::getUri("admin/core/users"),
        ],
        [
            "type" => "link",
            "text" => "Groups",
            "link" => Url::getUri("admin/core/groups"),
        ],
        [
            "type" => "link",
            "text" => "API",
            "link" => Url::getUri("admin/core/api"),
        ],
    ],
]);

Navigation.php

Herunterladen: Navigation.php

<?php

namespace Modules\Core\Components;

use Helpers\Url;

/**
 * Class Navigation
 * 
 * Module specific implementation of navigation method. Implemented
 * respectively for the "Sample" module of the application.
 */
class Navigation
{
    /**
     * Load module-specific client area navigation items. When creating items you can provide
     * a tab name. The navigation items are then automatically added to the specified tab.
     * The following tabs are available:
     *
     * - home
     * - hosting
     * - notifications
     *
     * @param Navigation $context
     * @param int $tab
     */
    public function loadClient($context, $tab)
    {
        if ($tab == "home") {
            $context->add([
                "type" => "separator",
                "text" => "Sample Separator",
            ]);

            $context->add([
                "type" => "link",
                "text" => "Sample",
                "link" => Url::getUri("admin/core/sample"),
            ]);
        }
    }

    /**
     * Load module-specific admin area navigation items. When creating items you can provide
     * a tab name. The navigation items are then automatically added to the specified tab. 
     * The following tabs are available:
     * 
     * - home
     * - hosting
     * - notifications
     * - settings
     * 
     * The settings tab is only available within the admin area.
     *
     * @param Navigation $context
     * @param string $tab
     */
    public function loadAdmin($context, $tab = "home")
    {
        if ($tab == "notifications") {
            $context->add([
                "type" => "separator",
                "text" => "Sample Separator",
            ]);

            $context->add([
                "type" => "link",
                "text" => "Sample",
                "link" => Url::getUri("admin/core/sample"),
            ]);

            $context->add([
                "type" => "dropdown",
                "icon" => "fa fa-square",
                "text" => "Core",
                "link" => "#",
                "data" => [
                    [
                        "type" => "link",
                        "text" => "Users",
                        "link" => Url::getUri("admin/core/users"),
                    ],
                    [
                        "type" => "link",
                        "text" => "Groups",
                        "link" => Url::getUri("admin/core/groups"),
                    ],
                    [
                        "type" => "link",
                        "text" => "API",
                        "link" => Url::getUri("admin/core/api"),
                    ],
                ],
            ]);
        }
    }
}