<?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" checked="checked"
              > 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>