view src/main/webapp/dataverse_header.xhtml @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line source

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:f="http://java.sun.com/jsf/core"
     xmlns:ui="http://java.sun.com/jsf/facelets"
     xmlns:p="http://primefaces.org/ui"
     xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
     xmlns:jsf="http://xmlns.jcp.org/jsf"
     xmlns:iqbs="http://xmlns.jcp.org/jsf/composite/iqbs">
    
    <div id="dataverse-header-block">
        <!-- Navbar Panel -->
        <nav id="navbarFixed" class="navbar navbar-default navbar-fixed-top" role="navigation">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#topNavBar">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a href="/">
                        <span class="navbar-brand"><i id="icon-dataverse" class="icon-dataverse"></i> #{bundle.dataverse}</span>
                    </a>
                    <h:outputLink value="#" onclick="statusInfo.show()" rendered="#{!empty settingsServiceBean.get(':StatusMessageText')}">
                        <span class="label label-default status">#{!empty settingsServiceBean.get(':StatusMessageHeader') ? settingsServiceBean.get(':StatusMessageHeader') : bundle['header.status.header']}</span>
                    </h:outputLink>
                    <ui:fragment rendered="#{empty settingsServiceBean.get(':StatusMessageText') and !empty settingsServiceBean.get(':StatusMessageHeader')}">
                        <span class="label label-default status">#{settingsServiceBean.get(':StatusMessageHeader')}</span>
                    </ui:fragment>
                </div>
                <div class="collapse navbar-collapse" id="topNavBar">
                    <ul class="nav navbar-nav navbar-right">
                        <li>
                            <a id="navbar-search-toggle" title="#{bundle['header.search.title']}">
                                <span class="glyphicon glyphicon-search"></span>
                            </a>
                        </li>
                        <form class="navbar-form navbar-left" role="search" style="display:none;">
                            <div class="form-group">
                                <label class="sr-only" for="navbarsearch">#{bundle.search}</label>
                                <input id="navbarsearch" type="text" class="search-input ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all" size="28" value="" placeholder="#{bundle['header.search.title']}"/>
                            </div>
                            <button type="submit" class="btn btn-default" onclick="window.location = '/?q=' + document.getElementById('navbarsearch').value; return false;">
                                <span class="glyphicon glyphicon-search"/> #{bundle.find}
                            </button>
                        </form>
                        <li>
                            <h:outputLink value="http://dataverse.org/" target="_blank">
                                #{bundle['header.about']}
                            </h:outputLink>
                        </li>
                        <li class="dropdown">
                            <span id="dataverseSupportLink" class="dropdown-toggle" data-toggle="dropdown">
                                #{bundle['header.guides']} <b class="caret"></b>
                            </span>
                            <ul class="dropdown-menu">
                                <li>
                                    <h:outputLink value="#{systemConfig.guidesBaseUrl}/#{systemConfig.version}/user" target="_blank">
                                        #{bundle['header.guides.user']}
                                    </h:outputLink>
                                </li>
                                <li>
                                    <h:outputLink value="#{systemConfig.guidesBaseUrl}/latest/developers" target="_blank">
                                        <h:outputText value="#{bundle['header.guides.developers']}" />
                                    </h:outputLink>
                                </li>
                                <li>
                                    <h:outputLink value="#{systemConfig.guidesBaseUrl}/latest/installation" target="_blank">
                                        <h:outputText value="#{bundle['header.guides.installation']}" />
                                    </h:outputLink>
                                </li>
                                <li>
                                    <h:outputLink value="#{systemConfig.guidesBaseUrl}/#{systemConfig.version}/api" target="_blank">
                                        <h:outputText value="#{bundle['header.guides.api']}" />
                                    </h:outputLink>
                                </li>
                            </ul>
                        </li>
                        <h:form class="navbar-form navbar-left navbar-form-link">
                           <p:commandLink value="#{bundle['header.support']}" oncomplete="contactForm.show()" update=":contactDialog" actionListener="#{sendFeedbackDialog.initUserInput}">
                                <f:setPropertyActionListener target="#{sendFeedbackDialog.messageSubject}" value="#{bundle['dataverse']} #{dataverseService.getApplicationVersion()} #{bundle['header.contact']}"/>
                                <f:setPropertyActionListener target="#{sendFeedbackDialog.recipient}" value="#{null}"/>
                                <f:setPropertyActionListener target="#{sendFeedbackDialog.userMessage}" value=""/>
                                <f:setPropertyActionListener target="#{sendFeedbackDialog.userEmail}" value=""/>
                           </p:commandLink>
                        </h:form>
                        <ui:fragment rendered="#{!dataverseSession.user.authenticated}">
                            <li>
                                <h:outputLink rendered="#{dataverseHeaderFragment.signupAllowed}"
                                              value="#{dataverseHeaderFragment.signupUrl}">
                                    #{bundle['header.signUp']}
                                </h:outputLink>
                            </li>
                            <li>
                                <h:outputLink value="/loginpage.xhtml#{loginRedirectPage}">
                                    #{bundle.login}
                                </h:outputLink>
                            </li>
                        </ui:fragment>
                        <ui:fragment rendered="#{dataverseSession.user.authenticated}">
                            <li class="dropdown accountName">
                                <span id="lnk_header_account_dropdown" class="dropdown-toggle" data-toggle="dropdown">
                                    <ui:fragment rendered="#{dataverseSession.user.superuser}">
                                        <span class="glyphicon glyphicon-user text-danger"></span>
                                    </ui:fragment>
                                    <h:outputText styleClass="#{dataverseSession.user.superuser ? 'text-danger' : ''}" value="#{dataverseSession.user.displayInfo.title}" id="userDisplayInfoTitle"/>
                                  <h:outputText styleClass="label label-danger" rendered="#{ dataverseHeaderFragment.getUnreadNotificationCount(dataverseSession.user.id) > 0 }"
                                                    value="#{ dataverseHeaderFragment.getUnreadNotificationCount(dataverseSession.user.id) }" />
                                    
                                  <b class="caret"></b>
                                </span>
                                <ul class="dropdown-menu">
                                    <li>
                                        <h:outputLink value="/dataverseuser.xhtml">
                                            <f:param name="selectTab" value="dataRelatedToMe" />
                                            <h:outputText value="#{bundle['header.user.selectTab.dataRelated']}" />
                                        </h:outputLink>
                                    </li>
                                    <li>
                                        <h:outputLink value="/dataverseuser.xhtml">
                                            <f:param name="selectTab" value="notifications" />
                                            <h:outputText value="#{bundle['header.user.selectTab.notifications']}" />
                                            <h:outputText styleClass="label label-danger" rendered="#{ dataverseHeaderFragment.getUnreadNotificationCount(dataverseSession.user.id) > 0 }"
                                                          value="#{dataverseHeaderFragment.getUnreadNotificationCount(dataverseSession.user.id)}" />
                                       </h:outputLink>
                                    </li>
                                    <ui:remove>
                                        <li>
                                            <h:outputLink value="/dataverseuser.xhtml">
                                                <f:param name="selectTab" value="groupsRoles" />
                                                <h:outputText value="#{bundle['header.user.selectTab.groupsAndRoles']}" />
                                            </h:outputLink>
                                        </li>
                                    </ui:remove>
                                    <li>
                                        <h:outputLink value="/dataverseuser.xhtml">
                                            <f:param name="selectTab" value="accountInfo" />
                                            <h:outputText value="#{bundle['header.accountInfo']}" />
                                        </h:outputLink>
                                    </li>
                                    <li class="divider"></li>
                                    <li class="logout">
                                        <h:form styleClass="navbar-form navbar-left" pt:role="logout">
                                            <h:commandLink action="#{dataverseHeaderFragment.logout}" id="lnk_header_logout">
                                                <h:outputText value="#{bundle['header.logOut']}" />
                                            </h:commandLink>
                                        </h:form>
                                    </li>
                                </ul>
                            </li>
                        </ui:fragment>
                    </ul>
                </div>
            </div>
        </nav>
        <ui:fragment rendered="#{dataverseHeaderFragment.debugShibboleth}">
          <h:outputText value="groups: #{dataverseHeaderFragment.getGroups(dataverseSession.user)}"/>
          <br/>
          <h:outputText value="permissions #{dataverseHeaderFragment.getPermissions(dataverseSession.user, dataverse)}"/>
        </ui:fragment>
        <ui:param name="dataversePage" value="#{dataverseLinksStayOnPage == true ? '' : '/dataverse.xhtml' }"/>

        <!-- Header Panel -->
        <div id="dataverseHeader" class="container bg-muted" 
                style="background:##{!empty dataverse.dataverseTheme.backgroundColor ? dataverse.dataverseTheme.backgroundColor : 'F5F5F5'};"
                jsf:rendered="#{showDataverseHeader}">
            <div class="dataverseHeaderLogo" style="text-align:#{!empty dataverse.dataverseTheme.logoAlignment ? dataverse.dataverseTheme.logoAlignment : 'center'};; background:##{!empty dataverse.dataverseTheme.logoBackgroundColor ? dataverse.dataverseTheme.logoBackgroundColor : 'F5F5F5'};"
                    jsf:rendered="#{!empty dataverse.dataverseTheme.logo and dataverse.dataverseTheme.logoFormat == 'RECTANGLE'}">
                <img src="/logos/#{dataverse.logoOwnerId}/#{dataverse.dataverseTheme.logo}" alt="#{dataverse.name} #{bundle.dataverse}"/>
            </div>
            <div class="dataverseHeaderBlock">
                <div class="dataverseHeaderCell dataverseHeaderLogo" jsf:rendered="#{!empty dataverse.dataverseTheme.logo and dataverse.dataverseTheme.logoFormat == 'SQUARE'}">
                    <img src="/logos/#{dataverse.logoOwnerId}/#{dataverse.dataverseTheme.logo}" alt="#{dataverse.name} #{bundle.dataverse}"/>
                </div>
                <div class="dataverseHeaderCell dataverseHeaderName" jsf:rendered="#{!empty dataverse.name}">
                    <a href="/dataverse/#{dataverse.alias}" class="dataverseHeaderDataverseName" style="color:##{!empty dataverse.dataverseTheme.linkColor ? dataverse.dataverseTheme.linkColor : '428bca'};">#{dataverse.name} #{bundle.dataverse}</a>
                    <h:outputText style="color:##{!empty dataverse.dataverseTheme.textColor ? dataverse.dataverseTheme.textColor : '888888'};" value=" (#{dataverse.affiliation})" rendered="#{!empty dataverse.affiliation}"/>
                    <h:outputText value="#{bundle.unpublished}" styleClass="label label-warning label-unpublished" rendered="#{!dataverse.released}"/>
                </div>
                <div class="dataverseHeaderCell dataverseHeaderName" jsf:rendered="#{empty dataverse.name}">
                    <h:outputText styleClass="dataverseHeaderDataverseName" value="#{bundle.newDataverse}"/>
                </div>
                <div class="dataverseHeaderCell dataverseHeaderTagline" jsf:rendered="#{!empty dataverse.dataverseTheme.tagline and empty dataverse.dataverseTheme.linkUrl}">
                    <h:outputText escape="false" style="color:##{!empty dataverse.dataverseTheme.textColor ? dataverse.dataverseTheme.textColor : '888888'};" value="#{dataverse.dataverseTheme.tagline}" />
                </div>
                <div class="dataverseHeaderCell dataverseHeaderLink" jsf:rendered="#{!empty dataverse.dataverseTheme.tagline and !empty dataverse.dataverseTheme.linkUrl}">
                    <h:outputLink value="#{dataverse.dataverseTheme.linkUrl}" style="color:##{!empty dataverse.dataverseTheme.linkColor ? dataverse.dataverseTheme.linkColor : '428bca'};" target="_blank">
                        <h:outputText value="#{dataverse.dataverseTheme.tagline}" escape="false"/>
                    </h:outputLink>
                </div>
            </div>
        </div>

        <div id="breadcrumbNavBlock" class="container" jsf:rendered="#{dataverseHeaderFragment.breadcrumbs.size() > 1}">
            <ui:repeat value="#{dataverseHeaderFragment.breadcrumbs}" var="breadcrumb" varStatus="status">
                <h:outputText value=" > " styleClass="breadcrumbCarrot" rendered="#{!status.first}"/>
                <div class="breadcrumbBlock">
                    <h:outputText value="#{breadcrumb.breadcrumbText}" styleClass="#{'breadcrumbActive'}" rendered="#{status.last}"/>
                    <ui:fragment rendered="#{!status.last}">
                        <h:outputText value="#{breadcrumb.breadcrumbText}" rendered="#{!breadcrumb.dvObject.instanceofDataverse and !breadcrumb.dvObject.instanceofDataset}"/>

                        <ui:fragment rendered="#{breadcrumb.dvObject.instanceofDataverse}">                       
                            <a id="breadcrumbLnk#{status.index}" href="/dataverse/${breadcrumb.dvObject.alias}">
                                <h:outputText value="#{breadcrumb.breadcrumbText}"/>
                            </a>
                        </ui:fragment>
                        <ui:fragment rendered="#{breadcrumb.dvObject.instanceofDataset}">                       
                            <a id="breadcrumbLnk#{status.index}" href="/dataset.xhtml?persistentId=${breadcrumb.dvObject.globalId}">
                                <h:outputText value="#{breadcrumb.breadcrumbText}"/>
                            </a>
                        </ui:fragment>                        
                    </ui:fragment>
                </div>
            </ui:repeat>                    
        </div>

        <ui:remove>
            <!-- Removing this temporarily until we can fix the performance issues with it;
                 replaced with generic bookmarks; will have to see how to best make this work-->
            <div class="dropdown #{dataverseHeaderFragment.hasVisibleChildren(dv) ? 'dropdown-toggle keep-on' : ''}" data-delay="#{dataverseHeaderFragment.hasVisibleChildren(dv) ? '800' : ''}" data-hover="#{dataverseHeaderFragment.hasVisibleChildren(dv) ? 'dropdown' : ''}" data-target="#{dataverseHeaderFragment.hasVisibleChildren(dv) ? '#' : ''}" data-close-others="#{dataverseHeaderFragment.hasVisibleChildren(dv) ? 'true' : ''}">
                <h:outputText value="#{dv.name} #{bundle.dataverse}" styleClass="#{dataverse.id == dv.id ? 'breadcrumbActive' : ''}" rendered="#{dataverse.id == dv.id and dataset == null}"/>
                <ui:fragment rendered="#{dataverse.id != dv.id or dataset != null}" >
                    <a id="breadcrumbLnk#{status.index}" href="/dataverse/#{dv.alias}">
                        <h:outputText value="#{dv.name} #{bundle.dataverse}"/>
                    </a>
                </ui:fragment>

                <ui:fragment rendered="#{dataverseHeaderFragment.hasVisibleChildren(dv)}">
                    <a id="taverse" styleClass="#{dataverse.id == dv.id ? 'breadcrumbActive' : ''}" role="button">
                        <span class="glyphicon glyphicon-chevron-down"></span>
                    </a>
                </ui:fragment>
            </div>
            <div class="dropdown-menu" role="menu" aria-labelledby="breadcrumbLnk#{status.index}" rendered="#{dataverseHeaderFragment.hasVisibleChildren(dv)}">
                <p:tree value="#{dataverseHeaderFragment.getDataverseTree(dv)}" var="node"  cache="true" id="tree">
                    <p:treeNode>
                        <h:outputText value="#{node.name} #{bundle.dataverse}" styleClass="breadcrumbActive" rendered="#{dataverse.id == node.id and dataset == null}"/>
                        <h:outputLink value="/dataverse/#{node.alias}" rendered="#{dataverse.id != node.id or dataset != null}">
                            <h:outputText value="#{node.name} #{bundle.dataverse}"/>
                        </h:outputLink>
                    </p:treeNode>
                </p:tree>
            </div>
        </ui:remove>

        <!-- Message Panel -->
        <p:fragment id="messagePanel" rendered="#{showMessagePanel}">
            <div class="container messagePanel">
                <iqbs:messages id="messages" collapsible="true" />
            </div>
        </p:fragment>
    </div>
</ui:composition>