Webylon 3.1 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • auth
  • Booking
  • cart
    • shipping
    • steppedcheckout
  • Catalog
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • AjaxUniqueTextField
  • AutocompleteTextField
  • ConfirmedPasswordField
  • CreditCardField
  • CurrencyField
  • CurrencyField_Disabled
  • CurrencyField_Readonly
  • EmailField
  • HtmlEditorConfig
  • HtmlEditorField
  • HtmlEditorField_Readonly
  • HtmlEditorField_Toolbar
  • NumericField
  • PasswordField
  • PhoneNumberField
  • UniqueRestrictedTextField
  • UniqueTextField
  1 <?php
  2 /**
  3  * CreditCard field, contains validation and formspec for creditcard fields.
  4  * @package forms
  5  * @subpackage fields-formattedinput
  6  */
  7 class CreditCardField extends TextField {
  8     
  9     function Field() {
 10         $parts = explode("\n", chunk_split($this->value,4,"\n"));
 11         $parts = array_pad($parts, 4, "");
 12         $field = "<span id=\"{$this->name}_Holder\" class=\"creditCardField\">" .
 13                 "<input autocomplete=\"off\" name=\"{$this->name}[0]\" value=\"$parts[0]\" maxlength=\"4\"" . $this->getTabIndexHTML(0) . " /> - " .
 14                 "<input autocomplete=\"off\" name=\"{$this->name}[1]\" value=\"$parts[1]\" maxlength=\"4\"" . $this->getTabIndexHTML(1) . " /> - " .
 15                 "<input autocomplete=\"off\" name=\"{$this->name}[2]\" value=\"$parts[2]\" maxlength=\"4\"" . $this->getTabIndexHTML(2) . " /> - " .
 16                 "<input autocomplete=\"off\" name=\"{$this->name}[3]\" value=\"$parts[3]\" maxlength=\"4\"" . $this->getTabIndexHTML(3) . " /></span>";
 17         return $field;
 18     }
 19     function dataValue() {
 20         if(is_array($this->value)) return implode("", $this->value);
 21         else return $this->value;
 22     }
 23     
 24     function jsValidation() {
 25         $formID = $this->form->FormName();
 26         $error1 = _t('CreditCardField.VALIDATIONJS1', 'Please ensure you have entered the');
 27         $error2 = _t('CreditCardField.VALIDATIONJS2', 'credit card number correctly.');
 28         $first = _t('CreditCardField.FIRST', 'first');
 29         $second = _t('CreditCardField.SECOND', 'second');
 30         $third = _t('CreditCardField.THIRD', 'third');
 31         $fourth = _t('CreditCardField.FOURTH', 'fourth');
 32         $jsFunc =<<<JS
 33 Behaviour.register({
 34     "#$formID": {
 35         validateCreditCard: function(fieldName) {
 36             if(!$(fieldName + "_Holder")) return true;
 37         
 38             // Creditcards are split into multiple values, so get the inputs from the form.
 39             var cardParts = $(fieldName + "_Holder").getElementsByTagName('input');
 40             
 41             var cardisnull = true;
 42             var i=0;
 43             
 44             for(i=0; i < cardParts.length ; i++ ){
 45                 if(cardParts[i].value == null || cardParts[i].value == "")
 46                     cardisnull = cardisnull && true;
 47                 else
 48                     cardisnull = false;
 49             }
 50             if(!cardisnull){
 51                 // Concatenate the string values from the parts of the input.
 52                 for(i=0; i < cardParts.length ; i++ ){
 53                     // The creditcard number cannot be null, nor have less than 4 digits.
 54                     if(
 55                         cardParts[i].value == null || cardParts[i].value == "" ||
 56                         cardParts[i].value.length < 3 || 
 57                         !cardParts[i].value.match(/[0-9]{4}/)
 58                     ){
 59                         switch(i){
 60                             case 0: number = "$first"; break;
 61                             case 1: number = "$second"; break;
 62                             case 2: number = "$third"; break;
 63                             case 3: number = "$fourth"; break;
 64                         }
 65                         validationError(cardParts[i],"$error1 " + number + " $error2","validation",false);
 66                     return false;
 67                     }
 68                 }
 69             }
 70             return true;            
 71         }
 72     }
 73 });
 74 JS;
 75         Requirements :: customScript($jsFunc, 'func_validateCreditCard');
 76         
 77         return "\$('$formID').validateCreditCard('$this->name');";
 78     }
 79     
 80     function validate($validator){
 81         // If the field is empty then don't return an invalidation message
 82         if(!trim(implode("", $this->value))) return true;
 83         
 84         $i=0;
 85         if($this->value) foreach($this->value as $part){
 86             if(!$part || !(strlen($part) == 4) || !ereg("([0-9]{4})",$part)){
 87                 switch($i){
 88                         case 0: $number = _t('CreditCardField.FIRST', 'first'); break;
 89                     case 1: $number = _t('CreditCardField.SECOND', 'second'); break;
 90                     case 2: $number = _t('CreditCardField.THIRD', 'third'); break;
 91                     case 3: $number = _t('CreditCardField.FOURTH', 'fourth'); break;
 92                 }
 93                 $validator->validationError(
 94                     $this->name,
 95                     sprintf(
 96                         _t('Form.VALIDATIONCREDITNUMBER', "Please ensure you have entered the %s credit card number correctly."),
 97                         $number
 98                     ),
 99                     "validation",
100                     false
101                 );
102                 return false;
103             }
104         $i++;
105         }
106     }
107 }
108 
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -
Webylon 3.1 API Docs API documentation generated by ApiGen 2.8.0