<?php
/*******************************************************************************
 * Copyright (c) 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:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *******************************************************************************/
 ?>

<div class="col-md-14 col-lg-17">
  <?php print $profile['large_logo_website_link'];?>
  <p><?php print $profile['full_text'];?></p>
  <?php if (!empty($profile['mp_listings'])):?>
    <h2><?php print $profile['name'];?>'s Marketplace Listings</h2>
    <ul>
    <?php foreach ($profile['mp_listings'] as $listing) :?>
      <li>
      <a href="//marketplace.eclipse.org/node/<?php print $listing['nid']?>"><?php print $listing['title']?> <?php print $listing['version']?></a><br/>
      <?php print $listing['teaser'];?>
      </li>
    <?php endforeach;?>
    </ul>
  <?php endif;?>

  <?php if (!empty($profile['mp_training'])):?>
    <h2><?php print $profile['name'];?>'s Marketplace Training and Consulting Listings</h2>
    <ul>
    <?php foreach ($profile['mp_training'] as $listing) :?>
      <?php if (!empty($listing['training'])) :?>
        <li>
          <a href="//marketplace.eclipse.org/node/<?php print $listing['nid']; ?>"><?php print $listing['title']; ?> Training</a>
          <?php if (!empty($listing['training_url'])): ?>
          <a target="_blank" href="<?php print $listing['training_url']; ?>"><i class="fa fa-external-link margin-left-5"></i></a>
          <?php endif; ?>
          <br/>
          <?php print $listing['training'];?>
        </li>
      <?php endif;?>
      <?php if (!empty($listing['consulting'])) :?>
      <li>
        <a href="//marketplace.eclipse.org/node/<?php print $listing['nid']; ?>"><?php print $listing['title']; ?> Consulting</a>
        <?php if (!empty($listing['consulting_url'])): ?>
        <a target="_blank" href="<?php print $listing['consulting_url']; ?>"><i class="fa fa-external-link margin-left-5"></i></a>
        <?php endif; ?>
        <br/>
        <?php print $listing['consulting'];?>
      </li>
      <?php endif;?>
    <?php endforeach;?>
    </ul>
  <?php endif;?>
</div>
<div class="col-md-10 col-lg-7">
  <div style="border:1px solid #eee; padding:3em 4.5em 2em 4.5em;" class="margin-bottom-20">
    <img class="img-responsive" src="<?php print $profile['img']?>"/>
  </div>
  <?php if (!empty($profile['projects'])) :?>
    <div class="text-highlight margin-bottom-20">
      <i class="fa pull-left fa-trophy orange fa-4x margin-top-10 margin-bottom-25"></i>
      <h3 class="h5 fw-700"><?php print $profile['name'];?></h3>
      <p><?php print $profile['name'];?> contributes to one or more <a href="#projects">Eclipse Projects!</a></p>
    </div>
  <?php endif;?>
  <?php if ($profile['products'] || $profile['projects']) :?>
    <div class="sideitem">
      <h6>Links</h6>
      <ul class="fa-ul">
        <?php if (!empty($profile['products'])) :?>
          <li>
            <i class="fa-li fa fa-chevron-circle-right orange"></i>
            <?php print $profile['name'];?>'s Other Products and Services:
            <ul>
            <?php foreach ($profile['products'] as $p) : ?>
              <li><a href="<?php print $p['url'];?>" target="_blank"><?php print $p['name'];?></a></li>
            <?php endforeach;?>
            </ul>
          </li>
        <?php endif;?>
        <?php if (!empty($profile['projects'])) :?>
          <li id="projects">
            <i class="fa-li fa fa-chevron-circle-right orange"></i>
            <?php print $profile['name'];?> is an Active Contributor to the following Project(s):
            <ul>
             <?php foreach ($profile['projects'] as $p) : ?>
              <li><a href="<?php print $p['url'];?>" target="_blank"><?php print $p['name'];?></a></li>
             <?php endforeach;?>
            </ul>
          </li>
        <?php endif;?>
      </ul>
    </div>
  <?php endif;?>
  <div class="sideitem">
    <h6>Interact</h6>
    <ul class="fa-ul">
      <li>
        <i class="fa-li fa fa-chevron-circle-right orange"></i>
        <a href="/membership/editMember.php?member_id=<?php print $profile['id'];?>">Edit This Page</a>
      </li>
    </ul>
  </div>
</div>
