MiniDigger/Hangar

View on GitHub
orePlayCommon/app/views/layout/header.scala.html

Summary

Maintainability
Test Coverage
@*
The main header displayed on each layout.
*@
@import controllers.project.{routes => projectRoutes}
@import controllers.sugar.Requests.OreRequest
@import ore.OreConfig
@import ore.permission.Permission
@import util.syntax._

@(authEnabled: Boolean = true)(implicit messages: Messages, request: OreRequest[_], config: OreConfig)


@tooltip(title: String) = @{
    Html("data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"" + title + "\"")
}

<nav id="topbar" class="navbar-main navbar-inverse">
    <div class="container">
        <!-- Left navbar -->
        <div id="sp-logo-container">
            <a class="logo" href="@routes.Application.showHome(Nil, None, None, None, None, None, None)">
                <img src="@config.sponge.logo">
                <span>@messages("general.projectName")</span>
                <i class="fas fa-fw fa-chevron-down"></i>
            </a>

            <div id="sp-logo-menu">
                <ul id="sp-logo-dropdown">
                    <li><a href="https://www.spongepowered.org">
                        <i class="fa-fw fas fa-home"></i>@messages("general.home")
                    </a></li>
                    <li><a href="https://forums.spongepowered.org">
                        <i class="fa-fw fas fa-comments"></i>@messages("general.forums")
                    </a></li>
                    <li><a href="https://github.com/SpongePowered">
                        <i class="fa-fw fas fa-code"></i>@messages("general.code")
                    </a></li>
                    <li><a href="https://docs.spongepowered.org">
                        <i class="fa-fw fas fa-book"></i>@messages("general.docs")
                    </a></li>
                    <li><a href="https://jd.spongepowered.org">
                        <i class="fa-fw fas fa-graduation-cap"></i>@messages("general.javadocs")
                    </a></li>
                    <li class="active"><a href="@routes.Application.showHome(Nil, None, None, None, None, None, None)">
                        <img src="https://spongepowered.org/assets/img/icons/ore.svg" alt="" class="fa-fw ore-nav">@messages("general.plugins") (@messages("general.appName"))
                    </a></li>
                    <li><a href="https://www.spongepowered.org/downloads">
                        <i class="fa-fw fas fa-download"></i>@messages("general.getsponge")
                    </a></li>
                    <li><a href="https://www.spongepowered.org/chat">
                        <i class="fa-fw fas fa-comment"></i>@messages("general.irc")
                    </a></li>
                </ul>
            </div>
        </div>

        <!-- Right navbar -->
        @if(authEnabled) {
            <ul class="nav navbar-nav navbar-collapse collapse navbar-right">
                @request.headerData.currentUser.map { cu =>

                <li class="dropdown nav-icon new-controls">
                    <a href="#" class="drop-down-toggle" data-toggle="dropdown">
                        <i class="icon fas fa-plus"></i>
                        <span class="caret"></span>
                    </a>
                    <ul class="user-dropdown dropdown-menu" aria-label="Create new&hellip;">
                        <li>
                            <a href="@projectRoutes.Projects.showCreator()">
                                <i class="fas fa-book fa-fw mr-1"></i>
                                <span>@messages("project.create")</span>
                            </a>
                            <a href="@routes.Organizations.showCreator()">
                                <i class="fas fa-users fa-fw mr-1"></i>
                                <span>@messages("org.create")</span>
                            </a>
                        </li>
                    </ul>
                </li>

                <li class="nav-icon authors-icon" @tooltip(messages("project.viewAuthors"))>
                    <a href="@routes.Users.showAuthors(None, None)">
                        <i class="icon fas fa-users"></i>
                    </a>
                </li>

                @if(request.headerData.globalPerm(Permission.IsStaff)) {
                    <li class="nav-icon staff-icon" @tooltip(messages("project.viewStaff"))>
                        <a href="@routes.Users.showStaff(None, None)">
                            <i class="icon fas fa-user-tie"></i>
                        </a>
                    </li>
                }

                    @* Show user controls *@
                <li class="dropdown user-controls nav-icon">
                    <a href="#" class="drop-down-toggle user-toggle" data-toggle="dropdown">
                        @if(request.headerData.hasNotice) {
                            <span class="unread"></span>
                        }
                        <img height="32" width="32" class="user-avatar" src="@cu.avatarUrl" />
                        <span class="caret"></span>
                    </a>
                    <ul class="user-dropdown dropdown-menu" aria-label="@messages("aria.dropdown.menu", 1)">
                        <li>
                            <a href="@routes.Users.showProjects(cu.name, None)">
                                <i class="fas fa-user mr-1"></i>
                                <span>@cu.name</span>
                            </a>
                        </li>

                        <li>
                            <a href="@routes.Users.showNotifications(None, None)">
                                <i class="fas fa-bell mr-1"></i>
                                <span>
                                    @messages("notification.plural")
                                    @if(request.headerData.hasUnreadNotifications) {
                                        <span class="unread"></span>
                                    }
                                </span>
                            </a>
                        </li>

                        @if(request.headerData.globalPerm(Permission.ModNotesAndFlags)) {
                            <li>
                                <a href="@routes.Application.showFlags()">
                                    <i class="fas fa-flag mr-1"></i>
                                    <span>
                                        @messages("project.flag.plural")
                                        @if(request.headerData.unresolvedFlags) {
                                            <span class="unread"></span>
                                        }
                                    </span>
                                </a>
                            </li>
                        }

                        @if(request.headerData.globalPerm(Permission.ModNotesAndFlags)) {
                            <li>
                                <a href="@routes.Application.showProjectVisibility()">
                                    <i class="fas fa-thumbs-up mr-1"></i>
                                    <span>
                                        Project approvals
                                        @if(request.headerData.hasProjectApprovals) {
                                            <span class="unread"></span>
                                        }
                                    </span>
                                </a>
                            </li>
                        }

                        @if(request.headerData.globalPerm(Permission.Reviewer)) {
                            <li>
                                <a href="@routes.Application.showQueue()">
                                    <i class="far fa-thumbs-up mr-1"></i>
                                    <span>
                                        @messages("user.queue")
                                        @if(request.headerData.hasReviewQueue) {
                                            <span class="unread"></span>
                                        }
                                    </span>
                                </a>
                            </li>
                        }

                        @if(request.headerData.globalPerm(Permission.ViewStats)) {
                            <li>
                                <a href="@routes.Application.showStats(None, None)">
                                    <i class="fas fa-chart-area mr-1"></i>
                                    <span>
                                        @messages("user.stats")
                                    </span>
                                </a>
                            </li>
                        }

                        @if(request.headerData.globalPerm(Permission.ViewHealth)) {
                            <li>
                                <a href="@routes.Application.showHealth()">
                                    <i class="fas fa-heartbeat mr-1"></i>
                                    <span>
                                    @messages("admin.health.title")
                                    </span>
                                </a>
                            </li>
                        }

                        @if(request.headerData.globalPerm(Permission.ViewLogs)) {
                            <li>
                                <a href="@routes.Application.showLog(None, None, None, None, None, None, None)">
                                    <i class="fas fa-list mr-1"></i>
                                    <span>
                                    @messages("admin.log.title")
                                    </span>
                                </a>
                            </li>
                        }

                        <li role="separator" class="divider"></li>
                        <li>
                            <a href="@routes.Users.logOut()">
                                <i class="fas fa-sign-out-alt mr-1"></i>
                                <span>@messages("general.signout")</span>
                            </a>
                        </li>
                    </ul>
                </li>
                }.getOrElse {
                    <li>
                        <div class="btn-group-login">
                            <a href="@routes.Users.signUp()"
                            class="btn btn-primary navbar-btn">@messages("general.signup")</a>
                            <a href="@routes.Users.logIn(None, None, Some(request.path))"
                            class="btn btn-primary navbar-btn">@messages("general.login")</a>
                        </div>
                    </li>
                }

            </ul>
        }
    </div>
</nav>