'use strict'; import React from 'react'; import { Link } from 'react-router'; import history from '../history'; import Nav from 'react-bootstrap/lib/Nav'; import Navbar from 'react-bootstrap/lib/Navbar'; import CollapsibleNav from 'react-bootstrap/lib/CollapsibleNav'; import DropdownButton from 'react-bootstrap/lib/DropdownButton'; import MenuItem from 'react-bootstrap/lib/MenuItem'; import NavItem from 'react-bootstrap/lib/NavItem'; import LinkContainer from 'react-router-bootstrap/lib/LinkContainer'; import EventActions from '../actions/event_actions'; import PieceListStore from '../stores/piece_list_store'; import AclProxy from './acl_proxy'; import HeaderNotifications from './header_notifications'; import HeaderNotificationDebug from './header_notification_debug'; import NavRoutesLinks from './nav_routes_links'; import { getLangText } from '../utils/lang_utils'; import { constructHead } from '../utils/dom_utils'; let Header = React.createClass({ propTypes: { currentUser: React.PropTypes.object.isRequired, routes: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, whitelabel: React.PropTypes.object.isRequired }, getInitialState() { return PieceListStore.getState(); }, componentDidMount() { // Listen to the piece list store, but don't fetch immediately to avoid // conflicts with routes that may need to wait to load the piece list PieceListStore.listen(this.onChange); // react-bootstrap 0.25.1 has a bug in which it doesn't // close the mobile expanded navigation after a click by itself. // To get rid of this, we set the state of the component ourselves. history.listen(this.onRouteChange); }, componentWillUnmount() { PieceListStore.unlisten(this.onChange); //history.unlisten(this.onRouteChange); }, onChange(state) { this.setState(state); }, getLogo() { const { whitelabel } = this.props; if (whitelabel.head) { constructHead(whitelabel.head); } if (whitelabel.subdomain && whitelabel.subdomain !== 'www' && whitelabel.logo){ return ( ); } else { return ( ); } }, getPoweredBy() { return (