Framework  3.9
PhoneNumberFieldRenderer Class Reference

Field renderer for zipcode data fields. More...

+ Inheritance diagram for PhoneNumberFieldRenderer:
+ Collaboration diagram for PhoneNumberFieldRenderer:

Public Member Functions

 PhoneNumberFieldRenderer (&$parent)
 
 renderScript ($field)
 FieldRenderers can override this method to provide any Javascript that their control requires for an edit form. More...
 
 renderScriptOnePart ($field, $limit)
 
 renderField ($field)
 FieldRenderers must override this method to provide the HTML implementation of the control used to edit the field. More...
 
 renderReadOnly ($field)
 
 renderSearchField ($field, $mode="equal")
 FieldRenderers must override this method to provide the HTML implementation of the control displayed for the field in a search form. More...
 
 preProcess ($field="")
 FieldRenderers can override this method to provide behavior that occurs prior to the saving of the parent form's target object to the database. More...
 
 addValidatorsToForm ($field, $required=false)
 This method is called by the AutoForm to add any default input validators that are required by the FieldRenderer. More...
 
 format ($field)
 
- Public Member Functions inherited from FieldRenderer
 FieldRenderer ($parent)
 Constructor. More...
 
 _printLabel ($field, $colspan=1, $styles="", $annotation="")
 Internal method to generate the HTML for the field label. More...
 
 _getLabel ($field, $addSuffix=true)
 
 _startField ($field, $styles="")
 Internal method to generate the starting HTML for the field (including the label) More...
 
 _endField ($field)
 Internal method to generate the closing HTML for the field. More...
 
 addSearchValidatorsToForm ($field, $mode, $required=false)
 For SearchForm, the validator field needs to match the name tag in the form which is in the format field:mode. More...
 
 formatName ($item, $name)
 Formats the given DataItem based on the supplied format string. More...
 
 renderSearchScript ($field, $mode)
 FieldRenderers can override this method to provide any Javascript that the control requires when being used in a search form. More...
 
 renderOnSubmitHandler ($field)
 FieldRenderers can override this method to provide any Javascript that must be executed when the form is submitted on the client. More...
 
 postProcess ($field="")
 FieldRenderers can override this method to provide behavior that occurs after the parent form's target object has been saved to the database. More...
 

Public Attributes

 $disable = false
 
 $template = "standard"
 
 $extension = false
 
- Public Attributes inherited from FieldRenderer
 $parent = null
 
 $labelSuffix = ""
 
 $colspan = 1
 
 $annotateBefore = false
 
 $annotateNextLine = true
 
 $hideLabel = false
 
 $onPreProcess = null
 callback hook for processing prior to saving the form's data object - individual renderers may override with custom processing More...
 
 $onPostProcess = null
 callback hook for processing after saving the form's data object - individual renderers may override with custom processing More...
 

Detailed Description

Field renderer for zipcode data fields.

autocomplete: whether field may attempt autocompletion based on the user-entered data string.

onChange: script-defined callback function to call when user edits the field (script is called on field exit, not for each key entered)

disable: alternative to readonly; field can be reenabled thru javascript

Example: to disable input in a field, add the following line of code to your calling script: $form->getRenderer("foo")->disable = true;

Definition at line 66 of file phone_number_field_renderer.inc.

Member Function Documentation

◆ addValidatorsToForm()

PhoneNumberFieldRenderer::addValidatorsToForm (   $field,
  $required = false 
)

This method is called by the AutoForm to add any default input validators that are required by the FieldRenderer.

Fields that need custom validation or a custom required validator should override this function.

Parameters
string$fieldthe field name
boolean$required- whether the field is required

Reimplemented from FieldRenderer.

Definition at line 215 of file phone_number_field_renderer.inc.

216  {
217  $label = isset($this->label) ? $this->label : $this->parent->prettifyFieldName($field);
218 
220 
221  $message = "Please supply phone as a 10-digit number.";
222  foreach($parts as $part => $limit)
223  {
224  $partField = ($part) ? "{$field}_{$part}" : $field;
225  if($part == "extension") continue;
226  $regexp = "^\\d{" . $limit . "}$";
227  $this->parent->validator->add(new RegularExpressionValidator($partField, $label, $regexp, $message));
228  }
229 
230  if($required)
231  $this->parent->validator->add(new RequiredValidator($field, $label));
232  }
Tests wheteher a field's value matches the supplied regular expression.
Definition: validation.inc:950
RequiredField Validator.
Definition: validation.inc:76

◆ format()

PhoneNumberFieldRenderer::format (   $field)

Definition at line 235 of file phone_number_field_renderer.inc.

236  {
237  return PhoneNumberTypeRenderer::format($this->parent->data->get($field), $this->template);
238  }
static format($value, $template="")

◆ PhoneNumberFieldRenderer()

PhoneNumberFieldRenderer::PhoneNumberFieldRenderer ( $parent)

Definition at line 72 of file phone_number_field_renderer.inc.

73  {
74  $this->FieldRenderer($parent);
75  }
FieldRenderer($parent)
Constructor.

◆ preProcess()

PhoneNumberFieldRenderer::preProcess (   $field = "")

FieldRenderers can override this method to provide behavior that occurs prior to the saving of the parent form's target object to the database.

For example, the FileUploadFieldRenderer overrides this method to process the uploading of the file and then store the location in the associated field in the target object.

Parameters
string$fieldthe field name

Reimplemented from FieldRenderer.

Definition at line 191 of file phone_number_field_renderer.inc.

192  {
194 
195  $partValues = array();
196 
197  foreach($parts as $part => $limit)
198  {
199  $partField = ($part) ? "{$field}_{$part}" : $field;
200  $partValues[] = $_POST[$partField];
201  }
202 
203  $value = implode($partValues, "");
204  $this->parent->data->set($field, $value);
205  }

◆ renderField()

PhoneNumberFieldRenderer::renderField (   $field)

FieldRenderers must override this method to provide the HTML implementation of the control used to edit the field.

Parameters
string$fieldthe field name

Reimplemented from FieldRenderer.

Definition at line 123 of file phone_number_field_renderer.inc.

124  {
126 
127  $this->_startField($field);
128 
129  $value = $this->parent->data->get($field);
130 
131  $valueParts = PhoneNumberTypeRenderer::getValueParts($value);
132 
133  $idx = 0;
134  foreach($parts as $part => $limit)
135  {
136  if($part == "extension" && !$this->extension)
137  continue;
138 
139  if($part == "area_code")
140  $pre = "( ";
141  elseif($part == "exchange")
142  $pre = ")  ";
143  elseif($part == "extension")
144  $pre = "ext ";
145  else
146  $pre = "<b>&#65293;</b>";
147 
148  $partField = ($part) ? "{$field}_{$part}" : $field;
149 
150  $onkeypress = " onkeyup='{$this->parent->id}_{$partField}_keyup(event);'";
151  $disable = ($this->disable) ? "disabled='disabled'" : "";
152  echo "$pre<input id='{$this->parent->id}_{$partField}' style='width: auto' data-name='{$field}' type='text' name='{$partField}' value='".htmlspecialchars($valueParts[$part], ENT_QUOTES, 'UTF-8')."' size='$limit' onkeypress='return maskInput(event, false);' $disable $onkeypress/>&nbsp;";
153  $idx++;
154  }
155 
156  $this->_endField($field);
157  }
_startField($field, $styles="")
Internal method to generate the starting HTML for the field (including the label)

◆ renderReadOnly()

PhoneNumberFieldRenderer::renderReadOnly (   $field)

Definition at line 160 of file phone_number_field_renderer.inc.

161  {
162  $this->_startField($field);
163 
164  echo $this->format($field);
165 
166  $this->_endField($field);
167  }
_endField($field)
Internal method to generate the closing HTML for the field.

◆ renderScript()

PhoneNumberFieldRenderer::renderScript (   $field)

FieldRenderers can override this method to provide any Javascript that their control requires for an edit form.

Parameters
string$fieldthe field name

Reimplemented from FieldRenderer.

Definition at line 77 of file phone_number_field_renderer.inc.

78  {
79  if ($this->parent->readOnlyForm || $this->parent->isReadOnly($field)
80  || array_key_exists($field, $this->parent->hidden)) return "";
81 
83 ?>
84 <script type='text/javascript'>
85 <?php
86  foreach($parts as $part => $limit)
87  {
88  if($part == "extension" && !$this->extension)
89  continue;
90  $partField = ($part) ? "{$field}_{$part}" : $field;
91  $this->renderScriptOnePart($partField, $limit);
92  }
93 ?></script><?php
94  }

◆ renderScriptOnePart()

PhoneNumberFieldRenderer::renderScriptOnePart (   $field,
  $limit 
)

Definition at line 96 of file phone_number_field_renderer.inc.

97  {
98 ?>
99 function <?echo $this->parent->id?>_<?echo $field ?>_keyup(event)
100 {
101  var ctrl = document.id('<?echo "{$this->parent->id}_{$field}" ?>');
102  if(!ctrl) return;
103 
104  if (event.key == "Tab" || event.key == "Shift") return;
105 
106  if(ctrl.value.length == <?php echo $limit ?>)
107  {
108  var next = ctrl.getNext("input");
109  if(next && next.getAttribute('data-name') == ctrl.getAttribute('data-name'))
110  {
111  next.focus();
112  }
113  }
114  else if (ctrl.value.length >= <?echo $limit ?>)
115  {
116  ctrl.value = ctrl.value.substring(0, <?echo $limit ?>);
117  }
118 
119 }
120 <?php
121  }

◆ renderSearchField()

PhoneNumberFieldRenderer::renderSearchField (   $field,
  $mode = "equal" 
)

FieldRenderers must override this method to provide the HTML implementation of the control displayed for the field in a search form.

Parameters
string$fieldthe field name

Reimplemented from FieldRenderer.

Definition at line 169 of file phone_number_field_renderer.inc.

170  {
171  if ($mode == "range")
172  {
173  $from = htmlspecialchars($this->parent->params->get($field, "from"), ENT_QUOTES, 'UTF-8');
174  $to = htmlspecialchars($this->parent->params->get($field, "to"), ENT_QUOTES, 'UTF-8');
175 
176  echo "<tr>\n";
177  $this->_printLabel($field);
178  echo "<td>From <input type='text' id='$field' name='$field:from' value='{$from}' size='25'> to <input type='text' name='$field:to' value='{$to}' size='25'></td>\n";
179  echo "</tr>\n";
180  }
181  else
182  {
183  $value = htmlspecialchars($this->parent->params->get($field, $mode), ENT_QUOTES, 'UTF-8');
184  echo "<tr>\n";
185  $this->_printLabel($field);
186  echo "<td><input type='text' id='$field' name='$field:$mode' value='{$value}' size='50'></td>\n";
187  echo "</tr>\n";
188  }
189  }
_printLabel($field, $colspan=1, $styles="", $annotation="")
Internal method to generate the HTML for the field label.

Member Data Documentation

◆ $disable

PhoneNumberFieldRenderer::$disable = false

Definition at line 68 of file phone_number_field_renderer.inc.

◆ $extension

PhoneNumberFieldRenderer::$extension = false

Definition at line 70 of file phone_number_field_renderer.inc.

◆ $template

PhoneNumberFieldRenderer::$template = "standard"

Definition at line 69 of file phone_number_field_renderer.inc.


The documentation for this class was generated from the following file: