<?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:10px" 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>
