<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 * Christopher Guindon (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */

// Infra 2200 - After a successful download on the Downloads page,
// this page (en_index.php) is being printed and the CSS and JS are needed.
$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/donate/assets/public/stylesheets/improve.min.css" media="screen" />');
$App->AddExtraJSFooter('<script type="text/javascript" src="/donate/assets/public/javascript/scripts.min.js?1501"></script>');
?>
<div class="text-center padding-top-50 padding-bottom-50">
  <div class="container padding-bottom-25">
  <?php
  // Infra 2193 - The container-thankyou div is needed for the Successful
  // Downloads page.
  $is_download_page = FALSE;
  if (isset($title_1) && isset($title_2) && isset($download_link)) :
    $is_download_page = TRUE;
    ?>
    <div class="container-thankyou">
      <div class="row thankyou text-center">
        <p class="thankyou-title">
          <span><?php print $title_1; ?></span> <?php print $title_2;?></p>
        <span class="direct-link"><?php print $download_link; ?></span>
      </div>
    </div>
  <?php endif;?>
  <div class="row">
      <div class="col-md-18 col-md-offset-3 donate-container">
        <div class="donate-container-content">
          <?php if (empty($picked_layout) || $picked_layout === 'layout_a'): ?>
            <h1>
              Power the <strong class="orange">Eclipse Community</strong> <br>with your donation
            </h1>
            <p>If you value Eclipse technologies, please consider making a donation. Contributions
              from users like you help fund the operations of the Eclipse Foundation. All money
              donated to the Eclipse Foundation will be used to support the Eclipse Community.</p>
          <?php else: ?>
           <p>Eclipse technologies are 100% free and open source and used by millions of developers
            every day. Here are three easy ways you can contribute toward the future development of
            Eclipse projects and technologies.</p>
            <h2>Donate to the Eclipse Community</h2>
            <p>Contributions from users like you help fund the operations of the Eclipse Foundation.
            All money donated to the Eclipse Foundation will be used to support the Eclipse Community.
          </p>
          <?php endif; ?>
          <input class="donate-bar" type="range" value="3" step="1" min="1" max="5">
        </div>

        <ul class="list-inline list-donate-amount text-left margin-bottom-20">
          <li class="one">$5</li>
          <li class="two">$10</li>
          <li class="three text-center">$35</li>
          <li class="four text-right">$50</li>
          <li class="five text-right">$100</li>
        </ul>

        <div class="form-inline margin-bottom-20 donate-submit">
          <div class="input-group">
            <input class="donate-amount form-control text-center" type="number" name="firstAmount"
              value="35" min="1"
            >
            <div class="input-group-addon">USD</div>
          </div>
          <!-- <input type="submit" class="btn btn-warning"> -->
          <button type="button" class="btn btn-warning btn-donate" data-toggle="modal"
            data-target="#donationModal"
          >Donate</button>
        </div>
        <ul class="list-inline">
          <li><a class="grey-link" href="mailto:donate@eclipse.org?subject=Donation Problem">Problems
              donating?</a></li>
          <li><a class="grey-link" href="/donate/faq.php">Donation FAQ</a></li>
        </ul>
        <?php if (!empty($picked_layout) && $picked_layout === 'layout_b'): ?>
          <h2>Get involved</h2>
          <p>Whether you choose to report bugs, request features, or become a committer, you can
          help improve the technology for yourself and the rest of the community. Find out more
          about <a href="/contribute/">how you can get involved</a>.</p>
          <h2>Connect with the community</h2>
          <p>Support your fellow users by answering questions on the forum and submitting your
          questions for feedback and discussion. Check out the <a href="https://www.eclipse.org/forums/">Eclipse Forum</a>.</p>
        <?php endif; ?>
      </div>
    </div>
  </div>
</div>
<!-- Modal -->
<div class="modal fade text-center" id="donationModal" tabindex="-1" role="dialog"
  aria-labelledby="donation_modal"
>
  <div class="donate-modal modal-dialog modal-sm" role="document">
    <div class="modal-content">
      <form id="donation_default_eclipse_form" class="choose-amount"
        action="<?php print $Paypal->get_gateway_process_url();?>" method="POST"
      >
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
          <h4 class="modal-title" id="myModalLabel">
            Thank you for supporting <span class="text-nowrap">our community</span>!
          </h4>
        </div>
        <div class="modal-body">
          <div class="row">
            <div class="col-sm-12 col-sm-offset-6">
              <div class="form-inline margin-bottom-15">
                <div class="input-group">
                  <input class="form-control form-amount text-center" type="number" name="amount"
                    value="35" min="1"
                  >
                  <div class="input-group-addon">USD</div>
                </div>
              </div>
            </div>
          </div>
          <div class="row margin-bottom-5">
            <div class="col-sm-24 text-center">
              <label class="radio-inline"><input type="radio" name="type" value="paypal"
                checked="checked"
              > Paypal</label> <label class="radio-inline"><input type="radio" name="type"
                value="credit"
              > Credit card</label>
            </div>
          </div>
          <div class="row margin-bottom-5">
            <div class="col-sm-24">
              <label class="radio-inline"><input type="radio" name="subscription"
                id="subscription_default" value="0" checked="checked"
              > One-time</label> <label class="radio-inline"><input type="radio" name="subscription"
                value="M"
              > Monthly</label> <label class="radio-inline"><input type="radio" name="subscription"
                value="Y"
              > Yearly</label>
            </div>
          </div>
          <div class="checkbox">
            <label> <input class="recognition-checkbox" type="checkbox" value="recognition" name="is_anonymous">
              <span class="recognition-text">I want to be listed on the recognition page</span>
            </label>
          </div>
          <div class="recognition-fields form-inline">
            <div class="form-group">
              <input class="form-control margin-bottom-10" type="text" name="first_name"
                placeholder="First Name"
              >
            </div>
            <div class="form-group">
              <input class="form-control margin-bottom-10" type="text" name="last_name"
                placeholder="Last Name"
              >
            </div>
          </div>
        </div>
        <div class="modal-footer donate-modal-footer text-center">
          <input type="hidden" name="default_process_url" value="<?php print $Paypal->get_gateway_process_url();?>">
          <input type="hidden" name="credit_process_url" value="<?php print $Paypal->get_gateway_credit_process_url();?>">
          <input type="submit" value="Donate" class="btn btn-warning">

          <?php if ($is_download_page) :?>
            <input type="hidden" name="landing_page" value="download">
            <input type="hidden" name="scope" value="<?php print $picked_layout; ?>">
            <input type="hidden" name="campaign" value="ab_testing">
          <?php else: ?>
            <?php if (!empty($_GET['scope'])) :?>
              <input type="hidden" name="scope" value="<?php print $App->checkPlain($_GET['scope']);?>">
            <?php endif;?>

            <?php if (!empty($_GET['campaign'])) :?>
              <input type="hidden" name="campaign" value="<?php print $App->checkPlain($_GET['campaign']);?>">
            <?php endif;?>
          <?php endif;?>

          <?php if (!empty($file_id) && is_numeric($file_id)) :?>
            <input type="hidden" name="file_id" value="<?php print $App->checkPlain($file_id); ?>">
          <?php endif;?>

        </div>
      </form>
    </div>
  </div>
</div>