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  * Text field that automatically checks that the value entered is unique for the given
  4  * set of fields in a given set of tables
  5  * @package forms
  6  * @subpackage fields-formattedinput
  7  */
  8 class AjaxUniqueTextField extends TextField {
  9     
 10     protected $restrictedField;
 11     protected $restrictedTable;
 12     // protected $restrictedMessage;
 13     protected $validateURL;
 14     
 15     protected $restrictedRegex;
 16     
 17     function __construct($name, $title, $restrictedField, $restrictedTable, $value = "", $maxLength = null, $validationURL = null, $restrictedRegex = null ){
 18         $this->maxLength = $maxLength;
 19         
 20         $this->restrictedField = $restrictedField;
 21         
 22         $this->restrictedTable = $restrictedTable;
 23         
 24         $this->validateURL = $validationURL;
 25         
 26         $this->restrictedRegex = $restrictedRegex;
 27         
 28         parent::__construct($name, $title, $value); 
 29     }
 30      
 31     function Field() {
 32         Requirements::add_i18n_javascript(SAPPHIRE_DIR . '/javascript/lang');
 33         Requirements::javascript(SAPPHIRE_DIR . "/javascript/UniqueFields.js");
 34         
 35         $this->jsValidation();
 36         
 37         $url = Convert::raw2att( $this->validateURL );
 38         
 39         if($this->restrictedRegex)
 40             $restrict = "<input type=\"hidden\" class=\"hidden\" name=\"{$this->name}Restricted\" id=\"" . $this->id() . "RestrictedRegex\" value=\"{$this->restrictedRegex}\" />";
 41         
 42         $attributes = array(
 43             'type' => 'text',
 44             'class' => 'text' . ($this->extraClass() ? $this->extraClass() : ''),
 45             'id' => $this->id(),
 46             'name' => $this->Name(),
 47             'value' => $this->Value(),
 48             'tabindex' => $this->getTabIndex(),
 49             'maxlength' => ($this->maxLength) ? $this->maxLength : null
 50         );
 51         
 52         return $this->createTag('input', $attributes);
 53     }
 54 
 55     function jsValidation() {
 56         $formID = $this->form->FormName();
 57         $id = $this->id();
 58         $url = Director::absoluteBaseURL() . $this->validateURL;
 59 
 60         if($this->restrictedRegex) {
 61             $jsCheckFunc = <<<JS
 62 Element.removeClassName(this, 'invalid');
 63 var match = this.value.match(/{$this->restrictedRegex}/);
 64 if(match) {
 65     Element.addClassName(this, 'invalid');
 66     return false;
 67 }
 68 
 69 return true;    
 70 JS;
 71         } else {
 72             $jsCheckFunc = "return true;";
 73         }
 74 
 75         $jsFunc = <<<JS
 76 Behaviour.register({
 77     '#$id' : {
 78         onkeyup: function() {
 79             if(this.checkValid()) {
 80                 new Ajax.Request('{$url}?ajax=1&{$this->name}=' + encodeURIComponent(this.value), { 
 81                     method: 'get',
 82                     onSuccess: function(response) {
 83                         if(response.responseText == 'ok')
 84                             Element.removeClassName(this, 'inuse');
 85                         else {
 86                             Element.addClassName(this, 'inuse');    
 87                         }
 88                     }.bind(this),
 89                     onFailure: function(response) {
 90                     
 91                     }   
 92                 });
 93             }
 94         },
 95         
 96         checkValid: function() {
 97             $jsCheckFunc
 98         }
 99     } 
100 });
101 JS;
102         Requirements::customScript($jsFunc, 'func_validateAjaxUniqueTextField');
103 
104         //return "\$('$formID').validateCurrency('$this->name');";
105 
106     }
107 
108     function validate( $validator ) {
109         
110         $result = DB::query(sprintf(
111             "SELECT COUNT(*) FROM \"%s\" WHERE \"%s\" = '%s'",
112             $this->restrictedTable,
113             $this->restrictedField,
114             Convert::raw2sql($this->value)
115         ))->value();
116 
117         if( $result && ( $result > 0 ) ) {
118             $validator->validationError( $this->name, _t('Form.VALIDATIONNOTUNIQUE', "The value entered is not unique") );
119             return false;
120         }
121 
122         return true; 
123     }
124 }
125 ?>
[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