<?php
/*******************************************************************************
 * Copyright (c) 2012-2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Denis Roy (Eclipse Foundation)- initial API and implementation
 *    Christopher Guindon (Eclipse Foundation) - Bug 432355 - Update l&f of the Eclipse site login
 *    Matt Ward  (Eclipse Foundation) - Added block notification
 *******************************************************************************/

  $var_welcomeback = $Sitelogin->getVariables('welcomeback');
  $name = $var_welcomeback['fname'] . ' ' . $var_welcomeback['lname'];
  $pageTitle = 'My Account';

?>
<div class="container padding-top-25 padding-bottom-25">
  <div id="maincontent">
    <div id="midcolumn">
      <h1><?php print $pageTitle; ?> <small><?php print $name; ?></small></h1>
      <?php if ($InfraBlock->isBlocked()) :?>
        <div class="alert alert-danger" role="alert"> Your IP (<?php print $_SERVER['REMOTE_ADDR'];?>) is currently blocked <?php print $InfraBlock->whyBlocked() ?>.
        <br/> The block will expire after: <strong><?php print $InfraBlock->getExpiry();?></strong></div>
      <?php endif;?>
      <?php print $Sitelogin->getSystemMessage();?>
      <ul class="nav nav-tabs" role="tablist">
        <li class="active"><a href="#open_tab_profile" role="tab" data-toggle="tab" id="tab-profile">Edit Profile</a></li>
        <li><a href="#open_tab_accountsettings" role="tab" data-toggle="tab" id="tab-accountsettings">Account Settings</a></li>
        <li><a data-url="<?php print $Sitelogin->getDomain(); ?>/site_login/subscriptions.php" href="#open_tab_subscriptions" role="tab" data-toggle="tab" id="tab-subscriptions">Subscriptions</a></li>

        <?php if ($var_welcomeback['friend']['is_benefit']) :?>
          <li><a href="#foe" role="tab" data-toggle="tab" id="tab-profile">Friends of Eclipse</a></li>
        <?php endif;?>

      </ul>
      <div class="tab-content">
        <div class="tab-pane fade in active" id="open_tab_profile">
          <?php include "myaccount/en_profile.php" ?>
        </div>

        <div class="tab-pane fade in" id="open_tab_accountsettings">
          <?php include "myaccount/en_accountsettings.php" ?>
        </div>

        <div class="tab-pane fade in" id="open_tab_subscriptions">
          <noscript>You need to enable Javascript to manage your subscriptions</noscript>
        </div>

        <?php if ($var_welcomeback['friend']['is_benefit']) :?>
          <div class="tab-pane fade" id="foe">
            <?php include "myaccount/en_friends_info.php" ?>
          </div>
        <?php endif;?>

      </div>
    </div>

    <div id="rightcolumn">
      <?php include "myaccount/en_sidebar.php" ?>
    </div>
  </div>
</div>
