r76557 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r76556‎ | r76557 | r76558 >
Date:01:04, 12 November 2010
Author:awjrichards
Status:deferred
Tags:
Comment:
Merging from r76509 through r76556 of trunk
Modified paths:
  • /branches/fundraising/deployment/DonationInterface (modified) (history)
  • /branches/fundraising/deployment/DonationInterface/donate_interface/donate_interface.i18n.php (modified) (history)
  • /branches/fundraising/deployment/DonationInterface/payflowpro_gateway/extras/recaptcha/recaptcha-php/recaptchalib.php (modified) (history)
  • /branches/fundraising/deployment/DonationInterface/payflowpro_gateway/extras/recaptcha/recaptcha.php (modified) (history)
  • /branches/fundraising/deployment/DonationInterface/payflowpro_gateway/forms/TwoColumnLetter6.php (added) (history)
  • /branches/fundraising/deployment/DonationInterface/payflowpro_gateway/forms/css/TwoColumnLetter6.css (added) (history)
  • /branches/fundraising/deployment/DonationInterface/payflowpro_gateway/payflowpro_gateway.i18n.php (modified) (history)
  • /branches/fundraising/deployment/DonationInterface/payflowpro_gateway/payflowpro_gateway.php (modified) (history)

Diff [purge]

Index: branches/fundraising/deployment/DonationInterface/payflowpro_gateway/extras/recaptcha/recaptcha-php/recaptchalib.php
@@ -1,4 +1,13 @@
22 <?php
 3+/**
 4+ * This is a modified PHP library that handles calling reCaptcha
 5+ *
 6+ * This is /different/ from the original PHP API for reCAPTCHA.
 7+ * This version supports cURL and using an http proxy for network
 8+ * communications and takes some settings set by MediaWiki.
 9+ *
 10+ * See below for original license and other info.
 11+ */
312 /*
413 * This is a PHP library that handles calling reCAPTCHA.
514 * - Documentation and latest version
@@ -32,6 +41,10 @@
3342 * THE SOFTWARE.
3443 */
3544
 45+// global MW variables that should be available
 46+global $wgPayflowRecaptchaUseHTTPProxy, $wgPayflowRecaptchaHTTPProxy,
 47+ $wgPayflowRecaptchaTimeout, $wgProto, $wgPayflowRecaptchaComsRetryLimit;
 48+
3649 /**
3750 * The reCAPTCHA server URL's
3851 */
@@ -40,6 +53,19 @@
4154 define( "RECAPTCHA_VERIFY_SERVER", "www.google.com" );
4255
4356 /**
 57+ * Proxy settings
 58+ */
 59+define( "RECAPTCHA_USE_HTTP_PROXY", $wgPayflowRecaptchaUseHTTPProxy );
 60+define( "RECAPTCHA_HTTP_PROXY", $wgPayflowRecaptchaHTTPProxy );
 61+
 62+/**
 63+ * Other reCAPTCHA settings
 64+ */
 65+define( "RECAPTCHA_TIMEOUT", $wgPayflowRecaptchaTimeout );
 66+define( "RECAPTCHA_PROTOCOL", $wgProto ); //http or https
 67+define( "RECAPTCHA_RETRY_LIMIT", $wgPayflowRecaptchaComsRetryLimit );
 68+
 69+/**
4470 * Encodes the given data into a query string format
4571 * @param $data - array of string elements to be encoded
4672 * @return string - encoded request
@@ -57,7 +83,7 @@
5884
5985
6086 /**
61 - * Submits an HTTP POST to a reCAPTCHA server
 87+ * Wrapper to submit an HTTP POST to a reCAPTCHA server
6288 * @param string $host
6389 * @param string $path
6490 * @param array $data
@@ -68,32 +94,108 @@
6995
7096 $req = _recaptcha_qsencode ( $data );
7197
72 - $http_request = "POST $path HTTP/1.0\r\n";
73 - $http_request .= "Host: $host\r\n";
74 - $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
75 - $http_request .= "Content-Length: " . strlen( $req ) . "\r\n";
76 - $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
77 - $http_request .= "\r\n";
78 - $http_request .= $req;
79 -
80 - $response = '';
81 - if ( false == ( $fs = @fsockopen( $host, $port, $errno, $errstr, 10 ) ) ) {
82 - die ( 'Could not open socket' );
 98+ if ( !extension_loaded( 'curl' ) ) {
 99+ $response = _recaptcha_http_post_fsock( $host, $path, $req, $port );
 100+ } else {
 101+ $response = _recaptcha_http_post_curl( $host, $path, $req, $port );
83102 }
84 -
85 - fwrite( $fs, $http_request );
86 -
87 - while ( !feof( $fs ) )
88 - $response .= fgets( $fs, 1160 ); // One TCP-IP packet
89 - fclose( $fs );
 103+
90104 $response = explode( "\r\n\r\n", $response, 2 );
91105
92106 return $response;
93107 }
94108
 109+/**
 110+ * Submits an HTTP POST to a reCAPTCHA server using fsockopen()
 111+ * @param $host
 112+ * @param $path
 113+ * @param $data
 114+ * @param int $port
 115+ * @return array response
 116+ */
 117+function _recaptcha_http_post_fsock( $host, $path, $data, $port = 80 ) {
 118+
 119+ $http_request = "POST $path HTTP/1.0\r\n";
 120+ $http_request .= "Host: $host\r\n";
 121+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
 122+ $http_request .= "Content-Length: " . strlen( $req ) . "\r\n";
 123+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
 124+ $http_request .= "\r\n";
 125+ $http_request .= $req;
95126
 127+ $response = '';
 128+ wfDebugLog( 'payflowpro_gateway', 'Preparing to communicate with reCaptcha via fsock.' );
 129+ if ( false == ( $fs = @fsockopen( $host, $port, $errno, $errstr, 10 ) ) ) {
 130+ wfDebugLog( 'payflowpro_gateway', 'Failed communicating with reCaptcha.' );
 131+ die ( 'Could not open socket' );
 132+ }
 133+ wfDebugLog( 'payflowpro_gateway', 'Finished communicating with reCaptcha.' );
96134
 135+ fwrite( $fs, $http_request );
 136+
 137+ while ( !feof( $fs ) )
 138+ $response .= fgets( $fs, 1160 ); // One TCP-IP packet
 139+ fclose( $fs );
 140+
 141+ return $response;
 142+}
 143+
97144 /**
 145+ * Submits an HTTP POST to a reCAPTCHA server using cURL
 146+ * @param $host
 147+ * @param $path
 148+ * @param $data
 149+ * @param int $port
 150+ * @return array response
 151+ */
 152+function _recaptcha_http_post_curl( $host, $path, $data, $port = 80 ) {
 153+ $url = "http://" . $host . ":" . $port . $path;
 154+
 155+ $ch = curl_init( $url );
 156+ curl_setopt( $ch, CURLOPT_POST, true );
 157+ curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
 158+ curl_setopt( $ch, CURLOPT_TIMEOUT, RECAPTCHA_TIMEOUT );
 159+ curl_setopt( $ch, CURLOPT_USERAGENT, 'reCAPTCHA/PHP' );
 160+ curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
 161+ curl_setopt( $ch, CURLOPT_HEADER, true );
 162+ curl_setopt( $ch, CURLOPT_HTTPHEADER, array( "Host: " . $host ) );
 163+
 164+ // set proxy settings if necessary
 165+ if ( RECAPTCHA_USE_HTTP_PROXY ) {
 166+ wfDebugLog( 'payflowpro_gateway', 'Using http proxy ' . RECAPTCHA_HTTP_PROXY );
 167+ curl_setopt( $ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
 168+ curl_setopt( $ch, CURLOPT_PROXY, RECAPTCHA_HTTP_PROXY );
 169+ }
 170+
 171+ // try up to three times
 172+ for ( $i = 0; $i < RECAPTCHA_RETRY_LIMIT; $i++ ) {
 173+ wfDebugLog( 'payflowpro_gateway', 'Preparing to communicate with reCaptcha via cURL at ' . $url . '.' );
 174+ $response = curl_exec( $ch );
 175+ wfDebugLog( 'payflowpro_gateway', "Finished communicating with reCaptcha." );
 176+ if ( $response ) {
 177+ wfDebugLog( 'payflowpro_gateway', 'Response from reCaptcha: ' . $response );
 178+ break;
 179+ }
 180+ }
 181+
 182+ /**
 183+ * This is a nasty hack to pretend like things worked when they really didn't
 184+ *
 185+ * Doing this per instructions from the fundraisers to accept a trxn when we
 186+ * are unsuccesful communicating with reCaptcha.
 187+ *
 188+ * This sets $response to a message that will fool reCaptcha (on our end) into thinking
 189+ * the user entered the correct values.
 190+ */
 191+ if ( !$response ) {
 192+ wfDebugLog( 'payflowpro_gateway', 'Failed communicating with reCaptcha: ' . curl_error( $ch ) );
 193+ $response = "true\r\n\r\nsuccess";
 194+ }
 195+
 196+ return $response;
 197+}
 198+
 199+/**
98200 * Gets the challenge HTML (javascript and non-javascript version).
99201 * This is called from the browser, and the resulting reCAPTCHA HTML widget
100202 * is embedded within the HTML form it was called from.
@@ -271,7 +373,4 @@
272374 return htmlentities( $emailparts[0] ) . "<a href='" . htmlentities ( $url ) .
273375 "' onclick=\"window.open('" . htmlentities ( $url ) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ( $emailparts [1] );
274376
275 -}
276 -
277 -
278 -?>
 377+}
\ No newline at end of file
Index: branches/fundraising/deployment/DonationInterface/payflowpro_gateway/extras/recaptcha/recaptcha.php
@@ -26,6 +26,23 @@
2727 $wgPayflowRecaptchaPublicKey = '';
2828 $wgPayflowRecaptchaPrivateKey = '';
2929
 30+// Timeout (in seconds) for communicating with reCatpcha
 31+$wgPayflowRecaptchaTimeout = 2;
 32+
 33+/**
 34+ * HTTP Proxy settings
 35+ *
 36+ * Default to settings in PayflowPro Gateway
 37+ */
 38+$wgPayflowRecaptchaUseHTTPProxy = $wgPayflowGatewayUseHTTPProxy;
 39+$wgPayflowRecaptchaHTTPProxy = $wgPayflowGatewayHTTPProxy;
 40+
 41+/**
 42+ * The # of times to retry communicating with reCaptcha if communication fails
 43+ * @var int
 44+ */
 45+$wgPayflowRecaptchaComsRetryLimit = 3;
 46+
3047 $dir = dirname( __FILE__ ) . "/";
3148 $wgAutoloadClasses['PayflowProGateway_Extras_ReCaptcha'] = $dir . "recaptcha.body.php";
3249
Index: branches/fundraising/deployment/DonationInterface/payflowpro_gateway/forms/TwoColumnLetter6.php
@@ -0,0 +1,258 @@
 2+<?php
 3+
 4+class PayflowProGateway_Form_TwoColumnLetter6 extends PayflowProGateway_Form_OneStepTwoColumn {
 5+
 6+ public function __construct( &$form_data, &$form_errors ) {
 7+ global $wgScriptPath;
 8+
 9+ // set the path to css, before the parent constructor is called, checking to make sure some child class hasn't already set this
 10+ if ( !strlen( $this->getStylePath() ) ) {
 11+ $this->setStylePath( $wgScriptPath . '/extensions/DonationInterface/payflowpro_gateway/forms/css/TwoColumnLetter6.css' );
 12+ }
 13+
 14+ parent::__construct( $form_data, $form_errors );
 15+ }
 16+
 17+ public function generateFormStart() {
 18+ global $wgOut, $wgRequest;
 19+
 20+ $form = parent::generateBannerHeader();
 21+
 22+ $form .= Xml::openElement( 'table', array( 'width' => '100%', 'cellspacing' => 0, 'cellpadding' => 0, 'border' => 0 ) );
 23+ $form .= Xml::openElement( 'tr' );
 24+ $form .= Xml::openElement( 'td', array( 'id' => 'appeal', 'valign' => 'top' ) );
 25+
 26+ $text_template = $wgRequest->getText( 'text_template', '2010/JimmyAppealLong' );
 27+ // if the user has uselang set, honor that, otherwise default to the language set for the form defined by 'language' in the query string
 28+ if ( $wgRequest->getText( 'language' ) ) $text_template .= '/' . $this->form_data[ 'language' ];
 29+
 30+ $template = ( strlen( $text_template ) ) ? $wgOut->parse( '{{' . $text_template . '}}' ) : '';
 31+ // if the template doesn't exist, prevent the display of the red link
 32+ if ( preg_match( '/redlink\=1/', $template ) ) $template = NULL;
 33+ $form .= $template;
 34+
 35+ $form .= Xml::closeElement( 'td' );
 36+
 37+ $form .= Xml::openElement( 'td', array( 'id' => 'donate', 'valign' => 'top' ) );
 38+
 39+ // add noscript tags for javascript disabled browsers
 40+ $form .= $this->getNoScript();
 41+
 42+ $form .= Xml::tags( 'h2', array( 'id' => 'donate-head' ), wfMsg( 'payflowpro_gateway-make-your-donation' ));
 43+
 44+ // provide a place at the top of the form for displaying general messages
 45+ if ( $this->form_errors['general'] ) {
 46+ $form .= Xml::openElement( 'div', array( 'id' => 'mw-payflow-general-error' ) );
 47+ if ( is_array( $this->form_errors['general'] ) ) {
 48+ foreach ( $this->form_errors['general'] as $this->form_errors_msg ) {
 49+ $form .= Xml::tags( 'p', array( 'class' => 'creditcard-error-msg' ), $this->form_errors_msg );
 50+ }
 51+ } else {
 52+ $form .= Xml::tags( 'p', array( 'class' => 'creditcard-error-msg' ), $this->form_errors_msg );
 53+ }
 54+ $form .= Xml::closeElement( 'div' ); // close div#mw-payflow-general-error
 55+ }
 56+
 57+ // Xml::element seems to convert html to htmlentities
 58+ $form .= "<p class='creditcard-error-msg'>" . $this->form_errors['retryMsg'] . "</p>";
 59+ $form .= Xml::openElement( 'form', array( 'name' => 'payment', 'method' => 'post', 'action' => $this->getNoCacheAction(), 'autocomplete' => 'off' ) );
 60+
 61+ $form .= $this->generateBillingContainer();
 62+ return $form;
 63+ }
 64+
 65+ public function generateFormEnd() {
 66+ $form = '';
 67+ $form .= $this->generateFormClose();
 68+ return $form;
 69+ }
 70+
 71+ protected function generateBillingContainer() {
 72+ $form = '';
 73+ $form .= Xml::openElement( 'div', array( 'id' => 'payflowpro_gateway-personal-info' ) );
 74+ $form .= Xml::openElement( 'table', array( 'id' => 'payflow-table-donor' ) );
 75+ $form .= $this->generateBillingFields();
 76+ $form .= Xml::closeElement( 'table' ); // close table#payflow-table-donor
 77+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-personal-info
 78+
 79+ return $form;
 80+ }
 81+
 82+ protected function generateBillingFields() {
 83+ global $wgScriptPath, $wgPayflowGatewayPaypalURL, $wgRequest;
 84+ $scriptPath = "$wgScriptPath/extensions/DonationInterface/payflowpro_gateway/includes";
 85+
 86+ $form = '';
 87+
 88+ /*
 89+ $form .= '<tr>';
 90+ $form .= '<td style="text-align:center;" colspan="2"><big><b>' . wfMsg( 'payflowpro_gateway-paypal-button' ) . '</b></big><br/><a href="#" onclick="document.payment.PaypalRedirect.value=\'true\';document.payment.submit();"><img src="' . $scriptPath . '/paypal.png"/></a></td>';
 91+ $form .= '</tr>';
 92+ */
 93+
 94+ // amount
 95+ $otherChecked = false;
 96+ $amount = -1;
 97+ if ( $this->form_data['amount'] != 100 && $this->form_data['amount'] != 50 && $this->form_data['amount'] != 35 && $this->form_data['amount'] != 20 && $this->form_data['amountOther'] > 0 ) {
 98+ $otherChecked = true;
 99+ $amount = $this->form_data['amountOther'];
 100+ }
 101+ $form .= '<tr>';
 102+ $form .= '<td colspan="2"><span class="creditcard-error-msg">' . $this->form_errors['invalidamount'] . '</span></td>';
 103+ $form .= '</tr>';
 104+ $form .= '<tr>';
 105+ $form .= '<td class="label">' . Xml::label( wfMsg( 'payflowpro_gateway-donor-amount' ), 'amount' ) . '</td>';
 106+ $form .= '<td>' . Xml::radio( 'amount', 100, $this->form_data['amount'] == 100, array( 'onfocus' => 'clearField2( document.getElementById(\'amountOther\'), "Other" )' ) ) . '100 ' .
 107+ Xml::radio( 'amount', 50, $this->form_data['amount'] == 50, array( 'onfocus' => 'clearField2( document.getElementById(\'amountOther\'), "Other" )' ) ) . '50 ' .
 108+ Xml::radio( 'amount', 35, $this->form_data['amount'] == 35, array( 'onfocus' => 'clearField2( document.getElementById(\'amountOther\'), "Other" )' ) ) . '35 ' .
 109+ Xml::radio( 'amount', 20, $this->form_data['amount'] == 20, array( 'onfocus' => 'clearField2( document.getElementById(\'amountOther\'), "Other" )' ) ) . '20 ' .
 110+ '</td>';
 111+ $form .= '</tr>';
 112+ $form .= '<tr>';
 113+ $form .= '<td class="label"></td>';
 114+ $form .= '<td>' . Xml::radio( 'amount', $amount, $otherChecked, array( 'id' => 'otherRadio' ) ) . Xml::input( 'amountOther', '7', $this->form_data['amountOther'], array( 'type' => 'text', 'onfocus' => 'clearField(this, "Other");document.getElementById("otherRadio").checked=true;', 'maxlength' => '10', 'onblur' => 'document.getElementById("otherRadio").value = this.value;', 'id' => 'amountOther' ) ) .
 115+ ' ' . $this->generateCurrencyDropdown() . '</td>';
 116+ $form .= '</tr>';
 117+
 118+ // email opt-in
 119+ $email_opt_value = ( $wgRequest->wasPosted() ) ? $this->form_data[ 'email-opt' ] : true;
 120+ $form .= '<tr>';
 121+ $form .= '<td class="label"> </td>';
 122+ $form .= '<td class="check-option">' . Xml::check( 'email-opt', $email_opt_value );
 123+ $form .= ' ';
 124+ // put the label inside Xml::openElement so any HTML in the msg might get rendered (right, Germany?)
 125+ $form .= Xml::openElement( 'label', array( 'for' => 'email-opt' ) );
 126+ $form .= wfMsg( 'donate_interface-email-agreement' );
 127+ $form .= Xml::closeElement( 'label' );
 128+ $form .= '</td>';
 129+ $form .= '</tr>';
 130+
 131+ $form .= '<tr>';
 132+ $form .= '<td class="label">' . wfMsg( 'payflowpro_gateway-payment-type' ) . '</td>';
 133+ $form .= '<td>' .
 134+ Xml::radio( 'card', 'cc1', $this->form_data['card'] == 'cc1', array( 'id' => 'cc1radio', 'onclick' => 'switchToCreditCard()' ) ) . '<label for="cc1radio">' . Xml::element( 'img', array( 'src' => $wgScriptPath . "/extensions/DonationInterface/payflowpro_gateway/includes/card-visa.png" ) ). '</label>' .
 135+ Xml::radio( 'card', 'cc2', $this->form_data['card'] == 'cc2', array( 'id' => 'cc2radio', 'onclick' => 'switchToCreditCard()' ) ) . '<label for="cc2radio">' . Xml::element( 'img', array( 'src' => $wgScriptPath . "/extensions/DonationInterface/payflowpro_gateway/includes/card-mastercard.png" ) ). '</label>' .
 136+ Xml::radio( 'card', 'cc3', $this->form_data['card'] == 'cc3', array( 'id' => 'cc3radio', 'onclick' => 'switchToCreditCard()' ) ) . '<label for="cc3radio">' . Xml::element( 'img', array( 'src' => $wgScriptPath . "/extensions/DonationInterface/payflowpro_gateway/includes/card-amex.png" ) ). '</label>' .
 137+ Xml::radio( 'card', 'cc4', $this->form_data['card'] == 'cc4', array( 'id' => 'cc4radio', 'onclick' => 'switchToCreditCard()' ) ) . '<label for="cc4radio">' . Xml::element( 'img', array( 'src' => $wgScriptPath . "/extensions/DonationInterface/payflowpro_gateway/includes/card-discover.png" ) ). '</label>' .
 138+ Xml::radio( 'card', 'pp', $this->form_data['card'] == 'pp', array( 'id' => 'ppradio', 'onclick' => 'switchToPayPal()' ) ) . '<label for="ppradio">' . Xml::element( 'img', array( 'src' => $wgScriptPath . "/extensions/DonationInterface/payflowpro_gateway/includes/card-paypal.png" ) ) . '</label>' .
 139+ '</td>';
 140+ $form .= '</tr>';
 141+
 142+ $form .= '</table>';
 143+
 144+ $form .= Xml::openElement( 'table', array( 'id' => 'payflow-table-cc' ) );
 145+
 146+ // name
 147+ $form .= $this->getNameField();
 148+
 149+ // email
 150+ $form .= $this->getEmailField();
 151+
 152+ $form .= '<tr>';
 153+ $form .= '<td colspan=2><span class="creditcard-error-msg"> </span></td>';
 154+ $form .= '</tr>';
 155+
 156+ // card number
 157+ $form .= $this->getCardNumberField();
 158+
 159+ // cvv
 160+ $form .= $this->getCvvField();
 161+
 162+ // expiry
 163+ $form .= $this->getExpiryField();
 164+
 165+ // street
 166+ $form .= $this->getStreetField();
 167+
 168+ // city
 169+ $form .= $this->getCityField();
 170+
 171+ // state
 172+ $form .= $this->getStateField();
 173+
 174+ // zip
 175+ $form .= '<tr>';
 176+ $form .= '<td colspan=2><span class="creditcard-error-msg">' . $this->form_errors['zip'] . '</span></td>';
 177+ $form .= '</tr>';
 178+ $form .= '<tr>';
 179+ $form .= '<td class="label">' . Xml::label( wfMsg( 'payflowpro_gateway-donor-postal' ), 'zip' ) . '</td>';
 180+ $form .= '<td>' . Xml::input( 'zip', '15', $this->form_data['zip'], array( 'type' => 'text', 'maxlength' => '15', 'id' => 'zip' ) ) .
 181+ '</td>';
 182+ $form .= '</tr>';
 183+ // country
 184+ $form .= $this->getCountryField();
 185+
 186+ /*
 187+ $comment_opt_value = ( $wgRequest->wasPosted() ) ? $this->form_data[ 'comment-option' ] : true;
 188+ $form .= '<tr>';
 189+ $form .= '<td class="check-option" colspan="2">' . Xml::check( 'comment-option', $comment_opt_value );
 190+ $form .= ' ' . Xml::label( wfMsg( 'payflowpro_gateway-anon-message' ), 'comment-option' ) . '</td>';
 191+ $form .= '</tr>';
 192+
 193+ $form .= $this->getEmailOptField();
 194+ */
 195+
 196+ return $form;
 197+ }
 198+
 199+ public function generateFormSubmit() {
 200+ // cc submit button
 201+ $form = Xml::openElement( 'div', array( 'id' => 'payflowpro_gateway-form-submit' ) );
 202+ $form .= Xml::openElement( 'div', array( 'id' => 'mw-donate-submit-button' ) );
 203+ $form .= Xml::element( 'input', array( 'class' => 'button-plain', 'value' => wfMsg( 'payflowpro_gateway-donor-submit' ), 'onclick' => 'document.payment.PaypalRedirect.value=0;submit_form( this );', 'type' => 'submit' ) );
 204+ $form .= Xml::closeElement( 'div' ); // close div#mw-donate-submit-button
 205+ $form .= Xml::openElement( 'div', array( 'class' => 'mw-donate-submessage', 'id' => 'payflowpro_gateway-donate-submessage' ) ) .
 206+ wfMsg( 'payflowpro_gateway-donate-click' );
 207+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-donate-submessage
 208+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-form-submit
 209+
 210+ // paypal submit button
 211+ $form .= Xml::openElement( 'div', array( 'id' => 'payflowpro_gateway-form-submit-paypal' ) );
 212+ $form .= Xml::openElement( 'div', array( 'id' => 'mw-donate-submit-button' ) );
 213+ $form .= Html::hidden( 'PaypalRedirect', 0 );
 214+ $form .= Xml::element( 'input', array( 'class' => 'button-plain', 'value' => wfMsg( 'payflowpro_gateway-donor-submit' ), 'onclick' => 'document.payment.PaypalRedirect.value=1;document.payment.submit();', 'type' => 'submit' ) );
 215+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-donate-submessage
 216+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-form-submit
 217+
 218+ return $form;
 219+ }
 220+
 221+ /**
 222+ * Generate form closing elements
 223+ */
 224+ public function generateFormClose() {
 225+ $form = '';
 226+ // add hidden fields
 227+ $hidden_fields = $this->getHiddenFields();
 228+ foreach ( $hidden_fields as $field => $value ) {
 229+ $form .= Html::hidden( $field, $value );
 230+ }
 231+
 232+ $form .= Xml::closeElement( 'form' ); // close form 'payment'
 233+ $form .= $this->generateDonationFooter();
 234+ $form .= Xml::closeElement( 'td' );
 235+ $form .= Xml::closeElement( 'tr' );
 236+ $form .= Xml::closeElement( 'table' );
 237+ return $form;
 238+ }
 239+
 240+ /**
 241+ * Generates the donation footer ("There are other ways to give...")
 242+ * @returns string of HTML
 243+ */
 244+ public function generateDonationFooter() {
 245+ global $wgScriptPath;
 246+ $form = '';
 247+ $form .= Xml::openElement( 'div', array( 'class' => 'payflow-cc-form-section', 'id' => 'payflowpro_gateway-donate-addl-info' ) );
 248+ $form .= Xml::openElement( 'div', array( 'id' => 'payflowpro_gateway-donate-addl-info-secure-logos' ) );
 249+ $form .= Xml::tags( 'p', array( 'class' => '' ), Xml::openElement( 'img', array( 'src' => $wgScriptPath . "/extensions/DonationInterface/payflowpro_gateway/includes/rapidssl_ssl_certificate-nonanimated.png" ) ) );
 250+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-donate-addl-info-secure-logos
 251+ $form .= Xml::openElement( 'div', array( 'id' => 'payflowpro_gateway-donate-addl-info-text' ) );
 252+ $form .= Xml::tags( 'p', array( 'class' => '' ), wfMsg( 'payflowpro_gateway-otherways-short' ) );
 253+ $form .= Xml::tags( 'p', array( 'class' => '' ), wfMsg( 'payflowpro_gateway-credit-storage-processing' ) );
 254+ $form .= Xml::tags( 'p', array( 'class' => '' ), wfMsg( 'payflowpro_gateway-question-comment' ) );
 255+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-donate-addl-info-text
 256+ $form .= Xml::closeElement( 'div' ); // close div#payflowpro_gateway-donate-addl-info
 257+ return $form;
 258+ }
 259+}
Index: branches/fundraising/deployment/DonationInterface/payflowpro_gateway/forms/css/TwoColumnLetter6.css
@@ -0,0 +1,122 @@
 2+.payflow-cc-form-section {
 3+ float: none;
 4+ margin-right: 0em;
 5+ margin-bottom: 1em;
 6+}
 7+
 8+#payflowpro_gateway-cc_form_container {
 9+ width: 100%;
 10+}
 11+
 12+#payflowpro_gateway-cc_form_form {
 13+ width: 475px;
 14+ float: right;
 15+ margin-left: 2em;
 16+ padding-left: 2em;
 17+ border-left: 1px solid #BBBBBB;
 18+}
 19+
 20+#payflowpro_gateway-cc_form_letter {
 21+ height: 100%;
 22+}
 23+
 24+#payflowpro_gateway-cc_form_letter p {
 25+ font-size: 1.125em;
 26+ margin-bottom: 1.2em;
 27+}
 28+
 29+#payflowpro_gateway-personal-info {
 30+ margin-right:0 !important;
 31+}
 32+
 33+#payflowpro_gateway-donate-addl-info-secure-logos {
 34+ float: left;
 35+ margin-right: 2em;
 36+}
 37+
 38+#payflowpro_gateway-cc_form_letter_inside {
 39+ padding-top: .5em;
 40+}
 41+
 42+#payflowpro_gateway-cc_otherways {
 43+ padding-top: .5em;
 44+ display: block;
 45+}
 46+#payflowpro_gateway-donate-addl-info {
 47+ margin-top:3em !important;
 48+ margin-bottom:1em !important;
 49+}
 50+
 51+#appeal {
 52+ /* background-color:#F3F3F3; */
 53+ background-color: transparent;
 54+ /* border-color:silver; */
 55+ border-color: transparent;
 56+ border-style:solid;
 57+ border-width:1px 0 1px 1px;
 58+ padding:16px 24px 24px;
 59+}
 60+#appeal-head {
 61+ font-size:1.5em;
 62+ line-height:1.125em;
 63+ padding-bottom:0.5em;
 64+ padding-top:0.125em;
 65+}
 66+#appeal-body {
 67+ font-size:1.125em;
 68+ margin-bottom:1em;
 69+ padding:0.2em 0;
 70+}
 71+#donate {
 72+ background-color:#A9D9A3;
 73+ border:1px solid #5EAC58;
 74+ padding:16px 24px 24px;
 75+ width:450px;
 76+}
 77+#donate-head {
 78+ border-color:#5EAC58;
 79+ font-size:1.5em;
 80+ line-height:1.125em;
 81+ padding-bottom:0.5em;
 82+ padding-top:0.125em;
 83+}
 84+#donate-body {
 85+ font-size:1.125em;
 86+ margin-bottom:1em;
 87+}
 88+
 89+/* Hiding content border */
 90+table {
 91+ background-color: transparent;
 92+}
 93+div#content {
 94+ background-color: transparent !important;
 95+ background-image: none !important;
 96+}
 97+div#mw-head-base {
 98+ background-image: none !important;
 99+}
 100+input#fname {
 101+ width:133px !important;
 102+}
 103+input#lname {
 104+ width:155px !important;
 105+}
 106+input.fullwidth {
 107+ width:300px !important;
 108+}
 109+
 110+div#payflowpro_gateway-form-submit-paypal {
 111+ display: block;
 112+}
 113+div#payflowpro_gateway-form-submit {
 114+ display: none;
 115+}
 116+table#payflow-table-cc {
 117+ display: none;
 118+}
 119+
 120+/* Hiding stuff we don't need */
 121+h1#firstHeading, div#contentSub {
 122+ display: none;
 123+}
Index: branches/fundraising/deployment/DonationInterface/payflowpro_gateway/payflowpro_gateway.i18n.php
@@ -819,6 +819,16 @@
820820 'payflowpro_gateway-credit-card-number' => 'Нумар крэдытнай карткі',
821821 'payflowpro_gateway-credit-card-number-abbreviated' => 'Крэдытная картка №',
822822 'payflowpro_gateway-credit-card-expiration' => 'Тэрмін дзеяньня крэдытнай карткі',
 823+ 'payflowpro_gateway-card-expiration' => 'Тэрмін дзеяньня карткі',
 824+ 'payflowpro_gateway-select-month-of-expiration' => 'Выберыце месяц сканчэньня тэрміну дзеяньня',
 825+ 'payflowpro_gateway-select-year-of-expiration' => 'Выберыце год сканчэньня тэрміну дзеяньня',
 826+ 'payflowpro_gateway-expires-question' => 'Сканчаецца?',
 827+ 'payflowpro_gateway-expires' => 'Сканчаецца',
 828+ 'payflowpro_gateway-card-security-code' => 'Код бясьпекі карткі',
 829+ 'payflowpro_gateway-cvv' => 'CVV',
 830+ 'payflowpro_gateway-cvv-number-abbreviated' => '№ CVV',
 831+ 'payflowpro_gateway-cvv2' => 'CVV2',
 832+ 'payflowpro_gateway-cvv-number' => 'Нумар CVV',
823833 'payflowpro_gateway-state-dropdown-YY' => 'Выбраць штат',
824834 'payflowpro_gateway-state-dropdown-XX' => 'Не ў ЗША',
825835 );
@@ -935,6 +945,7 @@
936946 'payflowpro_gateway-donor-expiration' => 'মেয়াদ উত্তীর্ণের তারিখ',
937947 'payflowpro_gateway-donor-security' => 'নিরাপত্তা কোড',
938948 'payflowpro_gateway-donor-submit' => 'দান করুন',
 949+ 'payflowpro_gateway-donor-currency-msg' => 'আপনার অনুদানটি $1 দেশ থেকে প্রদার করা হচ্ছে',
939950 'payflow_gateway-error-msg-nopaypal' => 'কারিগরী সমস্যার কারণে, আমরা আপনার অনুরোধ পেপ্যালের মাধ্যমে পাঠাতে পারছি না। অনুগ্রহপূর্বক আমাদের প্রচলিত ক্রেডিট কার্ড অনুদান ফর্ম ব্যবহারের চেষ্টা করুন।',
940951 'payflowpro_gateway-error-msg' => 'অনুগ্রহ করে আপনার $1 দিন',
941952 'payflowpro_gateway-error-msg-js' => 'অনুগ্রহ করে আপনার দিন',
@@ -959,13 +970,18 @@
960971 'payflowpro_gateway-error-msg-captcha-please' => 'আপনার কেডিট কার্ডের নিরাপত্তার জন্য, অনুগ্রহপূর্বক নিচে প্রদর্শিত অক্ষরগুলো টাইপ করুন।',
961972 'payflowpro_gateway-response-0' => 'আপনার লেনদেনটি সফলভাবে সম্পন্ন হয়েছে।
962973 আপনার অনুদানের জন্য ধন্যবাদ!',
 974+ 'payflowpro_gateway-response-126' => 'আপনার লেনদেনটির অনুমোদন বাকী রয়েছে।',
 975+ 'payflowpro_gateway-response-126-2' => 'আপনার প্রদানকৃত কিছু তথ্য ক্রেডিট কার্ডের প্রোফাইলের সাথে সাদৃশ্যপূর্ণ নয়, অথবা আপনি একটি বড় ধরনের উপহার প্রদান করেছেন। আপনার নিজের নিরাপত্তার জন্যই, আপনার অনুদানটি বর্তমানে পরীক্ষণের জন্য রাখা হয়েছে। আমরা যদি আপনার অনুদান গ্রহণ করতে ব্যর্থ হই তবে আমরা আপনার প্রদানকৃত ই-মেইল ঠিকানার মাধ্যমে আপনার সাথে যোগাযোগ করবো। অনুগ্রহপূর্বক আপনার যে-কোনো প্রশ্নের জন্য <a href="mailto:donate@wikimedia.org">donate@wikimedia.org</a> ঠিকানায় ই-মেইল করতে পারেন। ধন্যবাদ!',
963976 'payflowpro_gateway-response-12' => 'আরও তথ্যের জন্য অনুগ্রহপূর্বক আপনার ক্রেডিট কার্ড কোম্পানির সাথে যোগাযোগ করুন।',
 977+ 'payflowpro_gateway-response-13' => 'আপনার লেনদেনটি সম্পূর্ণ করতে ভয়েজ অথরাইজেশন প্রয়োজন।
 978+লেনদেনটি সম্পূর্ণ করতে অনুগ্রহপূর্বক আমাদের সাথে যোগোযোগ করুন।',
964979 'payflowpro_gateway-response-114' => 'আরও তথ্যের জন্য অনুগ্রহপূর্বক আপনার ক্রেডিট কার্ড কোম্পানির সাথে যোগাযোগ করুন।',
965980 'payflowpro_gateway-response-23' => 'আপনার ক্রেডিট কার্ড নম্বর অথবা মেয়াদ উত্তীর্ণের তারিখটি সঠিক নয়।',
966981 'payflowpro_gateway-response-4' => 'ভুল পরিমাণ',
967982 'payflowpro_gateway-response-24' => 'আপনার ক্রেডিট কার্ড নম্বর অথবা মেয়াদ উত্তীর্ণের তারিখটি সঠিক নয়।',
968983 'payflowpro_gateway-response-112' => 'আপনার ঠিকানা বা সিভিভি নম্বরটি (নিরাপত্তা কোড) সঠিক নয়।',
969984 'payflowpro_gateway-response-125' => 'ফ্রড প্রিভেনশন সার্ভিস কর্তৃক আপনার লেনদেনটি প্রত্যাখান করা হয়েছে।',
 985+ 'payflowpro_gateway-response-125-2' => 'আপনার ক্রেডিট কার্ড নিশ্চিত করা সম্ভব হয়নি। অনুগ্রহপূর্বক আপনার সকল তথ্যাদি, আপনার ক্রেডিট কার্ডের প্রোফাইলের সাথে মিলিয়ে প্রদান করুন, অথবা ভিন্ন একটি কার্ডের মাধ্যমে চেষ্টা করুন। এছাড়াও আপনি আমাদের <a href="http://wikimediafoundation.org/wiki/Ways_to_Give/en">প্রদানের অন্যান্য পদ্ধতি</a> থেকে একটি পদ্ধতি বেছে নিতে পারেন অথবা <a href="mailto:donate@wikimedia.org">donate@wikimedia.org</a> ঠিকানায় আমাদের সাথে যোগাযোগ করতে পারেন। আপনার সহায়তার জন্য আপনাকে ধন্যবাদ!',
970986 'payflowpro_gateway-response-default' => 'আপনার লেনদেনটি প্রক্রিয়াকৃত করার সময় কোনো সমস্যা সৃষ্টি হয়েছে।
971987 অনুগ্রহপূর্বক কিছুক্ষণ পর আবার চেষ্টা করুন।',
972988 'php-response-declined' => 'আপনার লেনদেনটি গ্রহণ করা সম্ভব নয়।',
@@ -1069,6 +1085,8 @@
10701086 'payflowpro_gateway-amount' => 'পরিমাণ',
10711087 'payflowpro_gateway-make-a-donation' => 'দান করুন',
10721088 'payflowpro_gateway-enter-your-amount' => 'অথবা উপরের বক্সে আপনার পরিমাণ প্রবেশ করান',
 1089+ 'payflowpro_gateway-will-support-with-gift' => 'আমি যে পরিমাণ উপহারের মাধ্যমে সহায়তা করবো তা হচ্ছে:',
 1090+ 'payflowpro_gateway-will-make-tax-deductible-gift' => 'আমি যে পরিমাণ শুল্কমুক্ত উপহার প্রদান করবো তা হচ্ছে:',
10731091 'payflowpro_gateway-select-dollar-amount' => 'ডলারে পরিমাণ নির্বাচন করুন',
10741092 'payflowpro_gateway-submit-my-secure-donation' => 'আমার নিরাপদ অনুদান গ্রহণ করুন',
10751093 'payflowpro_gateway-next' => 'পরবর্তী',
@@ -1210,6 +1228,9 @@
12111229 'payflowpro_gateway-state-province' => 'Stad/Proviñs',
12121230 'payflowpro_gateway-zip' => 'Zip',
12131231 'payflowpro_gateway-zip-code' => 'Kod post',
 1232+ 'payflowpro_gateway-zip-postal' => 'Kod post',
 1233+ 'payflowpro_gateway-zip-postal-code' => 'Kod post',
 1234+ 'payflowpro_gateway-billing-code' => "Kod post ar chomlec'h fakturenniñ",
12141235 'payflowpro_gateway-country' => 'Bro',
12151236 'payflowpro_gateway-select-country' => 'Diuzañ ur bro',
12161237 'payflowpro_gateway-confirm-email' => 'Kadarnaat ar postel',
@@ -1219,6 +1240,7 @@
12201241 'payflowpro_gateway-telephone-home' => 'Pgz (er gêr)',
12211242 'payflowpro_gateway-billing-phone-number' => 'Niv. pgz fakturenniñ',
12221243 'payflowpro_gateway-donation-information' => 'Titouroù war an donezon',
 1244+ 'payflowpro_gateway-cc-billing-information' => 'Titouroù ar gartenn-gred fakturenniñ',
12231245 'payflowpro_gateway-pay-by-credit-card' => 'Paeañ dre gartenn-gred',
12241246 'payflowpro_gateway-which-card' => "Pe gartenn a fell deoc'h ober ganti",
12251247 'payflowpro_gateway-choose-donation-method' => 'Dibab un doare da reiñ',
@@ -1243,6 +1265,7 @@
12441266 'payflowpro_gateway-cvv-number' => 'Niverenn CVV',
12451267 'payflowpro_gateway-verification-number' => 'Niverenn wiriekaat',
12461268 'payflowpro_gateway-what-is-this' => 'Petra eo se ?',
 1269+ 'payflowpro_gateway-do-not-include-dashes' => 'Arabat lakaat barrennoùigoù-stagañ',
12471270 'payflowpro_gateway-please-donate-today' => 'Roit bremañ mar plij',
12481271 'payflowpro_gateway-donate-now' => 'Roit bremañ',
12491272 'payflowpro_gateway-please-select-gift-amount' => 'Dibabit ar sammad evit ho prof',
@@ -1812,6 +1835,7 @@
18131836 'payflowpro_gateway-select-gift-amount' => 'Zvolte výši příspěvku',
18141837 'payflowpro_gateway-select-amount' => 'Zvolte částku',
18151838 'payflowpro_gateway-amount' => 'Částka',
 1839+ 'payflowpro_gateway-make-a-donation' => 'Přispějte',
18161840 'payflowpro_gateway-enter-your-amount' => 'Nebo zadejte částku do rámečku výše',
18171841 'payflowpro_gateway-will-support-with-gift' => 'Přispěji darem ve výši:',
18181842 'payflowpro_gateway-will-make-tax-deductible-gift' => 'Poskytnu daňově odečitatelný příspěvek ve výši:',
@@ -2347,12 +2371,14 @@
23482372 'payflowprogateway' => 'Wikimediju pódprěś',
23492373 'payflowpro_gateway-desc' => 'Pśeźěłowanje kreditoweje kórty PayPal Payflow Pro',
23502374 'payflowpro_gateway-accessible' => 'Toś ten bok jo jano wót bok darow pśistupny.',
2351 - 'payflowpro_gateway-form-message' => 'Pśinosuj ze swójeju kreditoweju kórtu.',
 2375+ 'payflowpro_gateway-form-message' => 'Wužyjśo slědujucy formular, aby z kreditoweju kórtu pósćiwał, abo',
 2376+ 'payflowpro_gateway-paypal-button' => 'Pśez PayPal pósćiś',
 2377+ 'payflowpro_gateway-cc-button' => 'Pśez kreditowu kórtu pósćiś',
23522378 'payflowpro_gateway-form-message-2' => 'Aby změnił sumu abo pjenjeze, wroś se k <a href="https://www.mediawiki.org/index.php?title=Donate">bokoju darow</a>',
23532379 'payflowpro_gateway-donor-legend' => 'Informacije wó darje',
23542380 'payflowpro_gateway-card-legend' => 'Informacije wó kreditowej kórśe',
23552381 'payflowpro_gateway-amount-legend' => 'Pósćiwańska suma:',
2356 - 'payflowpro_gateway-cvv-link' => 'Pśikład',
 2382+ 'payflowpro_gateway-cvv-link' => 'Źo to jo?',
23572383 'payflowpro_gateway-donor-amount' => 'Suma:',
23582384 'payflowpro_gateway-donor-currency-label' => 'Pjenjeze:',
23592385 'payflowpro_gateway-donor-email' => 'E-mailowa adresa:',
@@ -2409,7 +2435,7 @@
24102436 'payflowpro_gateway-response-125-2' => 'Waša kreditna kórta njedajo se pśekotnrolěrowaś. Pšosym pśeglědajśo, lěc wše pódane informacije wótpowěduju profiloju wašeje kreditneje kórty abo wopytajśo drugu kórtu. Móžoš teke jadnu z našych <a href="http://wikimediafoundation.org/wiki/Ways_to_Give/en">drugich pósćiwańskich móžnosćow</a> wužywaś abo se z nami pśez <a href="mailto:donate@wikimedia.org">donate@wikimedia.org</a> do zwiska stajiś. Źěkujomy se za wašu pódpěru.',
24112437 'payflowpro_gateway-response-default' => 'Pśi pśeźěłowanju twójeje transakcije jo zmólka nastała.
24122438 Pšosym wopytaj pózdźej hyšći raz.',
2413 - 'php-response-declined' => 'Twója transakcija jo se wótpokazała.',
 2439+ 'php-response-declined' => 'Twója transakcija njejo se dała akceptěrowaś.',
24142440 'payflowpro_gateway-thankyou' => 'Źěkujomy se za waš dar!',
24152441 'payflowpro_gateway-post-transaction' => 'Drobnostki transakcije',
24162442 'payflowpro_gateway-submit-button' => 'Pósćiś',
@@ -2421,9 +2447,103 @@
24222448 <h4>American Express</h4>
24232449 <p>Kod jo <i>pśecej wušej</i> naśišćanego (wusoko stajonego) kontowego numera na prědnem boku kórty.
24242450 Wótergi kod jo na lěwem boku kórty, ale jo pśecej wušej kontowego numera.</p><br />',
2425 - 'payflowpro_gateway-question-comment' => 'Wikipedija jo projekt załožby Wikimedia Foundation. Pšašanja abo komentary? Staj se ze załožbu Wikimedia Foundation do zwiska: <a href="mailto:donate@wikimedia.org">donate@wikimedia.org</a>',
2426 - 'payflowpro_gateway-donate-click' => 'Pó kliknjenju na "{{int:payflowpro_gateway-donor-submit}}", budu se informacije twójeje kreditneje kórty pśeźěłowaś.',
2427 - 'payflowpro_gateway-credit-storage-processing' => 'Njeskładujomy informacije twójeje kreditneje kórty a twóje wósobinske daty pódlaže našym <a href="http://wikimediafoundation.org/wiki/Donor_Privacy_Policy">pšawidłam priwatnosći</a>.',
 2451+ 'payflowpro_gateway-question-comment' => 'Pšašanja abo komentary? Stajśo se ze nami do zwiska: <a href="mailto:donate@wikimedia.org">donate@wikimedia.org</a>',
 2452+ 'payflowpro_gateway-donate-click' => 'Waša krediotwa kórta buźo se wěsće pśeźěłaś.',
 2453+ 'payflowpro_gateway-otherways' => 'Su <a href="http://wikimediafoundation.org/wiki/Ways_to_Give/en">druge pósćiwańske móžnosći, na pś. PayPal, šek abo post</a>.',
 2454+ 'payflowpro_gateway-otherways-short' => '<a href="http://wikimediafoundation.org/wiki/Ways_to_Give/en">Druge móžnosći pósćiwanja</a>',
 2455+ 'payflowpro_gateway-paypal' => 'Maśo konto PayPal? <a href="$1/index.php/Special:PayflowProGateway?_cache_=true&paypal=true&masthead=none&form_name=$2&text_template=2010/JimmyAppealLong&language=en&utm_source=$3&utm_medium=$4&utm_campaign=$5">Pósććo pśez PayPal</a>.',
 2456+ 'payflowpro_gateway-credit-storage-processing' => 'Njeskładujomy informacije twójeje kreditneje kórty, a twóje wósobinske daty pódlaže našym <a href="http://wikimediafoundation.org/wiki/Donor_Privacy_Policy">pšawidłam priwatnosći</a>..',
 2457+ 'payflowpro_gateway-token-mismatch' => 'Twójo pósejźenje jo wótběgnuło. Pšosym wupołniśo a wótpósćelśo formular hyšći raz.',
 2458+ 'payflowpro_gateway-cc-form-header-personal' => 'Płaśeńske informacije',
 2459+ 'payflowpro_gateway-cc-form-header-payment' => 'Informacije płaśenja',
 2460+ 'payflowpro_gateway-make-your-donation' => 'Něnto pósćiś',
 2461+ 'payflowpro_gateway-state-in-us' => 'jolic w USA',
 2462+ 'payflowpro_gateway-comment' => 'Komentar',
 2463+ 'payflowpro_gateway-first' => 'Prědne',
 2464+ 'payflowpro_gateway-middle' => 'Srědne',
 2465+ 'payflowpro_gateway-last' => 'Slědne',
 2466+ 'payflowpro_gateway-other' => 'Druge',
 2467+ 'payflowpro_gateway-anon-message' => 'Pšosym pomjeńśo mójo mě na zjawnej lisćinje pósćiwarjow',
 2468+ 'payflowpro_gateway-donate-wikipedia' => 'Na Wikipediji pósćiś',
 2469+ 'payflowpro_gateway-or' => 'abo',
 2470+ 'payflowpro_gateway-your-information' => 'Informacije wó was',
 2471+ 'payflowpro_gateway-mailing-address' => 'Póstowa adresa',
 2472+ 'payflowpro_gateway-billing-address' => 'Adresa zliceńki',
 2473+ 'payflowpro_gateway-billing-name' => 'Mě na zliceńce',
 2474+ 'payflowpro_gateway-title' => 'Titel',
 2475+ 'payflowpro_gateway-suffix' => 'Mjenjowy sufiks',
 2476+ 'payflowpro_gateway-company-name' => 'Mě firmy abo organizacije',
 2477+ 'payflowpro_gateway-address-1' => 'Adresa 1',
 2478+ 'payflowpro_gateway-address-2' => 'Adresa 2',
 2479+ 'payflowpro_gateway-address-lines' => 'Adresowe smužki',
 2480+ 'payflowpro_gateway-address-line-2' => 'Adresa (smužka 2)',
 2481+ 'payflowpro_gateway-street-address' => 'Droga a numer domu',
 2482+ 'payflowpro_gateway-street-address-line-2' => 'Droga a numer domu (smužka 2)',
 2483+ 'payflowpro_gateway-street-1' => 'Droga 1',
 2484+ 'payflowpro_gateway-street-2' => 'Droga 2',
 2485+ 'payflowpro_gateway-apartment-number' => 'Numer bydlenja',
 2486+ 'payflowpro_gateway-city-town' => 'Město/wjas',
 2487+ 'payflowpro_gateway-town-city' => 'Wjas/město',
 2488+ 'payflowpro_gateway-state-province' => 'Kraj/prowinca',
 2489+ 'payflowpro_gateway-zip' => 'Postowa licba',
 2490+ 'payflowpro_gateway-zip-code' => 'Postowa licba',
 2491+ 'payflowpro_gateway-zip-postal' => 'Postowa licba',
 2492+ 'payflowpro_gateway-zip-postal-code' => 'Postowa licba',
 2493+ 'payflowpro_gateway-billing-code' => 'Postowa licba zliceńki',
 2494+ 'payflowpro_gateway-country' => 'Kraj',
 2495+ 'payflowpro_gateway-select-country' => 'Kraj wubraś',
 2496+ 'payflowpro_gateway-confirm-email' => 'E-mail wobkšuśiś',
 2497+ 'payflowpro_gateway-confirmation-email' => 'Wobkšuśeńska e-mail',
 2498+ 'payflowpro_gateway-phone' => 'Telefon',
 2499+ 'payflowpro_gateway-telephone' => 'Telefon',
 2500+ 'payflowpro_gateway-telephone-home' => 'Telefon (priwatny)',
 2501+ 'payflowpro_gateway-billing-phone-number' => 'Telefonowy numer zliceńki',
 2502+ 'payflowpro_gateway-donation-information' => 'Pósćiwańske informacije',
 2503+ 'payflowpro_gateway-cc-billing-information' => 'Płaśeńske informacije kreditoweje kórty',
 2504+ 'payflowpro_gateway-pay-by-credit-card' => 'Pśez kreditowu kórtu płaśiś',
 2505+ 'payflowpro_gateway-which-card' => 'Kótaru kreditowu kórtu by wy rady wužywał',
 2506+ 'payflowpro_gateway-choose-donation-method' => 'Pósćiwańsku metodu wubraś',
 2507+ 'payflowpro_gateway-cardholders-name' => 'Mě mějucego kreditoweje kórty',
 2508+ 'payflowpro_gateway-name-on-card' => 'Mě na kreditowej kórśe',
 2509+ 'payflowpro_gateway-type-of-card' => 'Typ kreditoweje kórty',
 2510+ 'payflowpro_gateway-cards-accepted' => 'Móžne kreditowe kórty',
 2511+ 'payflowpro_gateway-card-type' => 'Typ kreditoweje kórty',
 2512+ 'payflowpro_gateway-credit-card-type' => 'Typ kreditoweje kórty',
 2513+ 'payflowpro_gateway-credit-card-number' => 'Numer kreditoweje kórty',
 2514+ 'payflowpro_gateway-credit-card-number-abbreviated' => 'Numer kreditoweje kórty',
 2515+ 'payflowpro_gateway-credit-card-expiration' => 'Płaśiwosć kreditoweje kórty',
 2516+ 'payflowpro_gateway-card-expiration' => 'Płaśiwosć kreditoweje kórty',
 2517+ 'payflowpro_gateway-select-month-of-expiration' => 'Mjasec spadnjenja wubraś',
 2518+ 'payflowpro_gateway-select-year-of-expiration' => 'Lěto spadnjenja wubraś',
 2519+ 'payflowpro_gateway-expires-question' => 'Pśepadnjo?',
 2520+ 'payflowpro_gateway-expires' => 'Pśepadnjo',
 2521+ 'payflowpro_gateway-card-security-code' => 'Wěstotny kode kreditoweje kórty',
 2522+ 'payflowpro_gateway-cvv' => 'CVV',
 2523+ 'payflowpro_gateway-cvv-number-abbreviated' => 'CVV-numer',
 2524+ 'payflowpro_gateway-cvv2' => 'CVV2',
 2525+ 'payflowpro_gateway-cvv-number' => 'CVV-numer',
 2526+ 'payflowpro_gateway-verification-number' => 'Pśespytowański numer',
 2527+ 'payflowpro_gateway-what-is-this' => 'Co to jo?',
 2528+ 'payflowpro_gateway-do-not-include-dashes' => 'Pšosym njewužywajśo wězawki',
 2529+ 'payflowpro_gateway-please-donate-today' => 'Pšosym pósććo źinsa',
 2530+ 'payflowpro_gateway-donate-now' => 'Něnto pósćiś',
 2531+ 'payflowpro_gateway-please-select-gift-amount' => 'Pšosym wubjeŕśo pósćiwańsku sumu',
 2532+ 'payflowpro_gateway-select-gift-amount' => 'Wubjeŕśo pósćiwańsku sumu',
 2533+ 'payflowpro_gateway-select-amount' => 'Sumu wubraś',
 2534+ 'payflowpro_gateway-amount' => 'Suma',
 2535+ 'payflowpro_gateway-make-a-donation' => 'Pósććo',
 2536+ 'payflowpro_gateway-enter-your-amount' => 'abo zapódajśo swóju sumu do górjejcnego póla',
 2537+ 'payflowpro_gateway-will-support-with-gift' => 'Budu pódpěraś z darom w slědujucej wusokosći:',
 2538+ 'payflowpro_gateway-will-make-tax-deductible-gift' => 'Budu cyniś slědujucy dar, kótaryž dajo se wótsajźiś wót danka:',
 2539+ 'payflowpro_gateway-select-dollar-amount' => 'Wubjeŕśo sumu w US-dolarach',
 2540+ 'payflowpro_gateway-submit-my-secure-donation' => 'Mój wěsty dar wótpósłaś',
 2541+ 'payflowpro_gateway-next' => 'Pśiducy',
 2542+ 'payflowpro_gateway-continue' => 'Pókšacowaś',
 2543+ 'payflowpro_gateway-cancel' => 'Pśetergnuś',
 2544+ 'payflowpro_gateway-payment' => 'Płaśenje',
 2545+ 'payflowpro_gateway-payment-type' => 'Nałog płaśenja',
 2546+ 'payflowpro_gateway-state-dropdown-YY' => 'Wubjeŕśo kraj',
 2547+ 'payflowpro_gateway-state-dropdown-XX' => 'Zwenka Zjadnośonych statow',
24282548 );
24292549
24302550 /** Greek (Ελληνικά)
@@ -5207,6 +5327,7 @@
52085328 'payflowpro_gateway-confirm-email' => 'E-Mailadress confirméieren',
52095329 'payflowpro_gateway-confirmation-email' => 'Confirmatiouns-E-Mail',
52105330 'payflowpro_gateway-telephone-home' => 'Tel. (doheem)',
 5331+ 'payflowpro_gateway-donation-information' => 'Informatiounen iwwer den Don',
52115332 'payflowpro_gateway-pay-by-credit-card' => 'Mat Kreditkaart bezuelen',
52125333 'payflowpro_gateway-which-card' => 'Wat fir eng Kaart wëllt Dir benotzen',
52135334 'payflowpro_gateway-name-on-card' => 'Numm op der Kaart',
@@ -8510,6 +8631,20 @@
85118632 'payflowpro_gateway-first' => 'మొదటి',
85128633 'payflowpro_gateway-last' => 'చివరి',
85138634 'payflowpro_gateway-other' => 'ఇతర',
 8635+ 'payflowpro_gateway-your-information' => 'మీ సమాచారం',
 8636+ 'payflowpro_gateway-address-1' => 'చిరునామా 1',
 8637+ 'payflowpro_gateway-address-2' => 'చిరునామా 2',
 8638+ 'payflowpro_gateway-address-line-2' => 'చిరునామా (పంక్తి 2)',
 8639+ 'payflowpro_gateway-street-address' => 'వీధి చిరునామా',
 8640+ 'payflowpro_gateway-city-town' => 'నగరం/పట్టణం',
 8641+ 'payflowpro_gateway-town-city' => 'పట్టణం/నగరం',
 8642+ 'payflowpro_gateway-country' => 'దేశం',
 8643+ 'payflowpro_gateway-what-is-this' => 'ఇది ఏమిటి?',
 8644+ 'payflowpro_gateway-amount' => 'మొత్తం',
 8645+ 'payflowpro_gateway-continue' => 'కొనసాగించు',
 8646+ 'payflowpro_gateway-cancel' => 'రద్దుచేయి',
 8647+ 'payflowpro_gateway-payment' => 'చెల్లింపు',
 8648+ 'payflowpro_gateway-payment-type' => 'చెల్లింపు రకం',
85148649 );
85158650
85168651 /** Thai (ไทย)
Index: branches/fundraising/deployment/DonationInterface/payflowpro_gateway/payflowpro_gateway.php
@@ -30,6 +30,7 @@
3131 $wgAutoloadClasses[ 'PayflowProGateway_Form_TwoColumnLetter3' ] = $dir . 'forms/TwoColumnLetter3.php';
3232 $wgAutoloadClasses[ 'PayflowProGateway_Form_TwoColumnLetter4' ] = $dir . 'forms/TwoColumnLetter4.php';
3333 $wgAutoloadClasses[ 'PayflowProGateway_Form_TwoColumnLetter5' ] = $dir . 'forms/TwoColumnLetter5.php';
 34+$wgAutoloadClasses[ 'PayflowProGateway_Form_TwoColumnLetter6' ] = $dir . 'forms/TwoColumnLetter6.php';
3435 $wgAutoloadClasses[ 'PayflowProGateway_Form_TwoStepTwoColumnLetter' ] = $dir . 'forms/TwoStepTwoColumnLetter.php';
3536 $wgAutoloadClasses[ 'PayflowProGateway_Form_SingleColumn' ] = $dir . 'forms/SingleColumn.php';
3637 $wgExtensionMessagesFiles['PayflowProGateway'] = $dir . 'payflowpro_gateway.i18n.php';
Index: branches/fundraising/deployment/DonationInterface/donate_interface/donate_interface.i18n.php
@@ -311,7 +311,7 @@
312312 'donate_interface-comment-message' => "Kas ur c'hemenn d'ar bed-holl a fell deoc'h ober ? Gallout a rit skrivañ betek 200 arouezenn amañ :",
313313 'donate_interface-comment-label' => 'Evezhiadenn :',
314314 'donate_interface-anon-message' => 'Lakait ma anv (ouzh ma evezhiadenn) war roll foran an dud o deus roet un dra bennak.',
315 - 'donate_interface-email-agreement' => "A-du emaon evit degemer kelc'hlizheroù pe posteloù a-berzh Diazezadur Wikimedia.",
 315+ 'donate_interface-email-agreement' => 'A-du emaon evit degemer keleier a-berzh Diazezadur Wikimedia ur wezh dre vare.',
316316 'donate_interface-comment-title' => 'Kemenn publik',
317317 'donate_interface-amount-error' => '**Merkit ur sammad reizh**',
318318 'donate_interface-processing-error' => "Ur fazi zo bet e-ser plediñ gant ho koulenn. N'haller ket tizhout prosesor ebet.",
@@ -429,7 +429,7 @@
430430 'donate_interface-comment-message' => 'Chcete se podělit o nějakou myšlenku se světem? Napište sem nejvýše 200 znaků:',
431431 'donate_interface-comment-label' => 'Komentář:',
432432 'donate_interface-anon-message' => 'Uveďte mé jméno (spolu s mým komentářem) na veřejném seznamu dárců.',
433 - 'donate_interface-email-agreement' => 'Souhlasím, aby mi Wikimedia Foundation v budoucnu zasílala novinky a e-maily.',
 433+ 'donate_interface-email-agreement' => 'Souhlasím, aby mi Wikimedia Foundation občas zasílala novinky.',
434434 'donate_interface-comment-title' => 'Veřejný komentář',
435435 'donate_interface-amount-error' => '**Zadejte platnou částku**',
436436 'donate_interface-processing-error' => 'Při zpracovávání vašeho příspěvku došlo k chybě.
@@ -596,9 +596,7 @@
597597 'donate_interface-comment-message' => 'Maš myslicku, kótaruž coš ze swětom źěliś? Napiš how až k 200 znamješkam:',
598598 'donate_interface-comment-label' => 'Komentar:',
599599 'donate_interface-anon-message' => 'Pšosym naspomnjej mójo mě (pódla mójogo komentara) na zjawnej lisćinje darow.',
600 - 'donate_interface-email-agreement' => "Pśigłosujom pśipósłanjeju pśiducych powěsćowych listow ab e-mailow Wikimedije.
601 -Njebuźomy nigda twóje informacije pśedawaś abo z nimi wikowaś.
602 -Naše pšawidła priwatnosći za dary namakajoš <a title='Donate/Donor Privacy' href='/wiki/Donate/Donor_Privacy'>how</a>",
 600+ 'donate_interface-email-agreement' => 'Zwólijom do togo, pśigóźbne aktualizacije wót załožby Wikimedia Foundation dostaś.',
603601 'donate_interface-comment-title' => 'Zjawny komentar',
604602 'donate_interface-amount-error' => ' **Pšosym zapódaj płaśiwu sumu**',
605603 'donate_interface-processing-error' => 'Pśi pśeźěłowanju twójogo napšašowanja jo zmólka nastała. Procesor njestoj k dispoziciji.',
@@ -622,10 +620,14 @@
623621 );
624622
625623 /** Greek (Ελληνικά)
 624+ * @author Egmontaz
626625 * @author Glavkos
627626 * @author ZaDiak
628627 */
629628 $messages['el'] = array(
 629+ 'donate_interface' => 'Υποστηρίξτε το Wikimedia',
 630+ 'donate_interface-currency' => 'Νόμισμα:',
 631+ 'donate_interface-amount-error' => '** Παρακαλώ εισάγετε έγκυρο ποσό **',
630632 'donate_interface-GBP' => 'GBP: Βρετανική λίρα',
631633 'donate_interface-EUR' => 'EUR: Ευρώ',
632634 'donate_interface-USD' => 'USD: Δολάριο Η.Π.Α.',
@@ -634,6 +636,7 @@
635637 'donate_interface-CHF' => 'CHF: Φράγκο Ελβετίας',
636638 'donate_interface-CZK' => 'CZK: Κορώνα Τσεχίας',
637639 'donate_interface-DKK' => 'DKK: Κορόνα Δανίας',
 640+ 'donate_interface-HKD' => 'HKD: Δολάριο Χονγκ Κονγκ',
638641 'donate_interface-JPY' => 'JPY: Ιαπωνικό Γεν',
639642 );
640643
@@ -1112,7 +1115,7 @@
11131116 'donate_interface-comment-message' => 'Maš mysličku, kotruž chceš ze swětom dźělić? Napisaj tu hač k 200 znamješkam:',
11141117 'donate_interface-comment-label' => 'Komentar:',
11151118 'donate_interface-anon-message' => 'Prošu mjenuj moje mjeno (pódla mojeho komentara) na zjawnej lisćinje darow.',
1116 - 'donate_interface-email-agreement' => 'Přizwoluju připósłanju přichodnych powěsćowych listow abo e-mejlow załožby Wikimedia foundation.',
 1119+ 'donate_interface-email-agreement' => 'Přizwoluju składnostne aktualizacije wot załožby Wikimedia foundation dóstać.',
11171120 'donate_interface-comment-title' => 'Zjawny komentar',
11181121 'donate_interface-amount-error' => ' **Prošu zapodaj płaćiwu sumu**',
11191122 'donate_interface-processing-error' => 'Zmylk je při předźěłowanju twojeho naprašowanja wustupił. Procesor k dispoziciji njesteji.',
@@ -1456,7 +1459,7 @@
14571460 'donate_interface-comment-message' => 'Wëllt dir der Welt Är iwwerleeunge matdeelen? Schreiwt bis zu 200 Zeechen heihinn:',
14581461 'donate_interface-comment-label' => 'Bemierkung:',
14591462 'donate_interface-anon-message' => 'Setzt mäin Numm w.e.g. (niewent menger Bemierkung) op déi ëffentlech Lëscht vun den Donateuren.',
1460 - 'donate_interface-email-agreement' => "Ech sinn domat d'accord fir an Zukunft Newsletteren oder E-Maile vun der Wikimedia Foundation ze kréien.",
 1463+ 'donate_interface-email-agreement' => "Ech sinn domat d'accord fir an Zukunft Aktualisatioune vun der Wikimedia Foundation ze kréien.",
14611464 'donate_interface-comment-title' => 'Ëffentlech Bemierkung',
14621465 'donate_interface-amount-error' => '**Gitt w.e.g. e valabele Betrag an**',
14631466 'donate_interface-processing-error' => 'Et gouf e Feeler beim behandele vun Ärer Ufro. Et ass kee Prozesseur disponibel.',
@@ -2426,6 +2429,7 @@
24272430 'donate_interface-comment-message' => 'అందరితో ఏదైనా ఆలోచనని పంచుకోవాలనుకుంటున్నారా? 200 అక్షరాల్లో ఇక్కడ చెప్పండి:',
24282431 'donate_interface-comment-label' => 'వ్యాఖ్య:',
24292432 'donate_interface-anon-message' => 'బహిరంగ దాతల జాబితాలో దయచేసి నా పేరుని (నా వ్యాఖ్య ప్రక్కనే) చూపించండి.',
 2433+ 'donate_interface-email-agreement' => 'వికీమీడియా ఫౌండేషను నుండి అప్పుడప్పుడూ తాజావిశేషాలను అందుకోడానికి నేను అంగీకరిస్తున్నాను.',
24302434 'donate_interface-comment-title' => 'బహిరంగ వ్యాఖ్య',
24312435 'donate_interface-amount-error' => '**దయచేసి సరైన మొత్తాన్ని పేర్కొనండి**',
24322436 'donate_interface-GBP' => 'GBP: బ్రిటీష్ పౌండ్',
Property changes on: branches/fundraising/deployment/DonationInterface
___________________________________________________________________
Modified: svn:mergeinfo
24332437 Merged /trunk/extensions/DonationInterface:r76509-76556

Follow-up revisions

RevisionCommit summaryAuthorDate
r76562Merging from r76557 thru r76561 of trunkawjrichards02:03, 12 November 2010

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r76509Merging from r76432 trhu r76508 of trunkawjrichards06:24, 11 November 2010
r76556Fixed curlopt setting for proxytypeawjrichards01:00, 12 November 2010

Status & tagging log