Commit graph

21 commits

Author SHA1 Message Date
Bradley M. Kuhn
60d0a06e25 progressbar Javascript need not change for content
The content of the amounts for the fundraiser can be kept in the HTML
rather than the progress bar Javscript code.

I suspect at some point I should keep this data in the Django database
and extract it from there as dynamic content.
2014-12-08 19:15:17 -05:00
Bradley M. Kuhn
8e22371f19 Progress bar & $5k triple-match program.
An anonymous donor is matching up to $5k at 2-to-1 for supporter
donations.  Therefore, update the page to include a progress bar for
this, and add notes about it in various places.
2014-12-08 15:45:58 -05:00
Bradley M. Kuhn
674261e0f0 Start errors in shown state for non-Javascript.
Since the error messages have important information, and since the
Javascript code is the only "enforcer" of the minimum donation, the
errors really should be displayed by default if the browser is not
Javascript-capable.  This change does that, but also toggles the state
back so that errors are not shown until needed in Javascript-capable
browsers.

I believe this still fits graceful degradation, since browsers without
Javascript and CSS were already showing the errors anyway, so now the
only real change is that everyone sees the errors by default.

It *might* make sense to not show the errors in red in non-Javascript
browsers (i.e., make the default CSS color black for the form-error-show
class, and then change it to red in the Javascript).  I didn't make that
so, because it's not clear to me that's right, and we *do* want to draw
attention to the errors lest people become a supporter below the
minimum (which has happened once already -- that precipitated this
change).

I'm still annoyed that PayPal doesn't provide a "minimum but no maximum"
variable donation box of its own, which would solve this problem
outright.
2014-12-05 10:07:27 -05:00
Bradley M. Kuhn
1574b2dc37 Match right form for these changes.
The general selectors previously used here matched either form.  With
this change, they will only match the form for which the selection was
actually made.
2014-12-03 21:09:25 -05:00
Bradley M. Kuhn
2d96daee90 Rework Javascript final form validation.
The problem before was that an error in the annual form would prevent
submission of the monthly form and vice-versa.  That is herein corrected
with this change, which assures that the input with id of "amount" if
the specific form (id'd with "annual" or "monthly") is the only one
checked.
2014-12-03 20:44:15 -05:00
Bradley M. Kuhn
8c3ecd347a Return amount to id; add id for error span.
I actually think I want amount to be id rather than a class, now that I
figured out the proper selector to find them all.

Also, the $("span", input.parent()) was buggy if there were any other
span's other than error-related ones in the supporter-form-inputs div.

Finally, ditch that <small> stuff and simply place a font-size reduction
into the CSS for the form-error-show.
2014-12-03 20:42:33 -05:00
Bradley M. Kuhn
6b9bdb335e Modify PayPal "no_shipping" var via t-shirt choice
According to
https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/

  no_shipping has the following values:
      0: prompt for an address, but do not require one
      1: do not prompt for an address
      2: prompt for an address, and require one
      The default is 0.

Ideally, any time they change wantGift, even in a pure HTML form, we'd
change it between 0 and 2 as appropriate (i.e., we need the address if
they want the t-shirt).

However, I couldn't find an easy way to make this modification in pure
CSS or HTML, so it only happens in Javascript-enabled browsers.

This is still graceful degradation, since the only impact is in cases
where a non-Javascript user fails to give us an address, and we have to
email later to get the shipping address.
2014-12-03 18:50:53 -05:00
Bradley M. Kuhn
e0f0ee820f Monthly supporter can enter variable amount.
This required some doing.  I'm not completely sure it works, but I
roughly followed the tutorial available at:
  https://www.paypal.com/webapps/mpp/get-started/create-recurring-donation-button
with back-reference to this:
  https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/

My main concern with this setup currently is that 'p3' must be set to
'1', which would seem from the documentation to be saying the payment
will recur only once.  There is a subtle hint via the tutorial that
setting 'src' to 1 will override 'p3' with whatever is found in 'srt',
but that's not said anywhere explicitly that I can find.  So, I'm going
with this and I'll just test it myself with a monthly subscription to
see if it's indefinite (which is the behavior we herein desire).

Finally, note that "amount" is now a class rather than id, since I'm now
using the associated jQuery .on('input') code for both the annual and
monthly amount boxes.
2014-12-03 18:10:45 -05:00
Bradley M. Kuhn
342590123f Fix typo. 2014-12-03 16:55:17 -05:00
Bradley M. Kuhn
eea08767d3 Change default to "no t-shirt".
I suspect some supporters are just accepting the default, so by default,
the t-shirt option will be "No", and supporters will have to
affirmatively chose "Yes".

Thanks to previously committed Javascript hack, users with Javascript
capable browsers should avoid seeing the t-shirt sizing options until
they chose "Yes".
2014-12-03 16:20:57 -05:00
Bradley M. Kuhn
7fec31ce8a Hide t-shirt size selector when t-shirt's unwanted
Use Javascript to hide the t-shirt size selector when the the user
selects "No" for "Do you want a t-shirt?".  Reshow it (and make sure
it's shown by default) for "Yes".
2014-12-03 13:33:26 -05:00
Bradley M. Kuhn
44301d386b Correct Markdown-style footnote w/ HTML style one.
This footnote is now correctly formatted in HTML, with links back and
forth, as well as a jQuery UI tooltip popup for the footnote.
2014-12-02 18:25:42 -05:00
Bradley M. Kuhn
c41a897be2 Simply clear error for monthly donation.
Since the error messages relate only to the amount entered, the error
message should be cleared when switching to the monthly giving option.
2014-12-02 18:02:32 -05:00
Bradley M. Kuhn
c546833984 Amount starts class "valid", when default accepted
The default amount of $120 appears in the amount field, but the class
"valid" was usually only added when the user changes the amount.

The valid class must be added at the start to ensure someone simply
clicking with the default still can donate.
2014-12-02 17:58:39 -05:00
Bradley M. Kuhn
090fb9f268 Larger error message when submitting bad amount.
This addition to the Javascript and text ensures a clear message to the
user of a Javascript-enabled browser that there is an issue with the
amount.  Also, it prevents submission of the form until the amount is
correct.

A user with Javascript disabled can circumvent these validation steps;
however, the worst-case scenario is that they make a donation for less
than $120 that is categorized in Conservancy's internal system as a
Supporter donation, and we'll be adding internal checks to find that.
2014-12-02 17:26:55 -05:00
Bradley M. Kuhn
b2c18cc59e Correct regular expression and comma thing fully.
parseInt() likely wants no commas, so we use a value without it, and the
regular expression now seems to properly match was PayPal will take as
valid.
2014-12-02 17:04:05 -05:00
Bradley M. Kuhn
3438812e00 Maybe comma need not be escaped? 2014-12-02 16:28:46 -05:00
Bradley M. Kuhn
8b16abf981 PayPal seems to be ok with commas. 2014-12-02 16:27:37 -05:00
Bradley M. Kuhn
b90413809f Subscriptions for monthly supporters.
There are now two options at the bottom of the page, annual and monthly
supporters.

In addition, there is Javascript code to cause the annual and monthly
items disappear and reappear upon selection either in the donate box or
the selector above the items.

I tested this in links and it seems to degrade reasonably well.
2014-12-02 13:35:53 -05:00
Bradley M. Kuhn
9bfb5e10de Rework form with error messages & basic validation
Since PayPal cannot seem to be cajoled into verifying a minimum amount,
we have to do it here with Javascript.  This isn't perfect validation:
the form can currently still be submitted with an amount less than $120,
but at least this way Javascript-enabled browsers might prevent some
folks from doing that.
2014-12-02 11:31:43 -05:00
Bradley M. Kuhn
01eb8c80c8 Move javascript code from HTML files to a .js file 2014-12-02 11:28:37 -05:00