Framework  3.9
DateFieldRenderer Class Reference

Field renderer for date data fields. More...

+ Inheritance diagram for DateFieldRenderer:
+ Collaboration diagram for DateFieldRenderer:

Public Member Functions

 DateFieldRenderer (&$parent)
 
 addValidatorsToForm ($field, $required=false)
 This method is called by the AutoForm to add any default input validators that are required by the FieldRenderer. More...
 
 renderScript ($field)
 FieldRenderers can override this method to provide any Javascript that their control requires for an edit form. More...
 
 renderField ($field)
 FieldRenderers must override this method to provide the HTML implementation of the control used to edit the field. 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...
 
 renderSearchField ($field, $mode)
 FieldRenderers must override this method to provide the HTML implementation of the control displayed for the field in a search form. More...
 
 renderReadOnly ($field)
 
 renderDateRangeReadOnly ($field, $date_from, $date_to)
 
 format ($value)
 
- 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...
 
 renderOnSubmitHandler ($field)
 FieldRenderers can override this method to provide any Javascript that must be executed when the form is submitted on the client. 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...
 
 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

 $validator
 
 $onChange = ""
 optional javascript callback for 'change' event on date text field More...
 
 $onInput = ""
 optional javascript callback for 'input' event on date text field More...
 
 $template = ""
 template for date display in readonly mode - default reaonly format is short style More...
 
- 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 date data fields.

Renders with date format validation and a date picking popup widget.

@template - field formatting format for readonly is standard "F d, Y", accepts "long", "daylong", and "short" and any format string used by php date function

Definition at line 48 of file date_field_renderer.inc.

Member Function Documentation

◆ addValidatorsToForm()

DateFieldRenderer::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 60 of file date_field_renderer.inc.

61  {
62  $label = isset($this->label) ? $this->label : $this->parent->prettifyFieldName($field);
63 
64  $this->parent->validator->add(new DateValidator($field, $label));
65 
66  if($required)
67  {
68  $this->parent->validator->add(new RequiredValidator($field, $label));
69  }
70 
71  }
Date Validator.
Definition: validation.inc:338
RequiredField Validator.
Definition: validation.inc:76

◆ DateFieldRenderer()

DateFieldRenderer::DateFieldRenderer ( $parent)

Definition at line 55 of file date_field_renderer.inc.

56  {
57  $this->FieldRenderer($parent);
58  }
FieldRenderer($parent)
Constructor.

◆ format()

DateFieldRenderer::format (   $value)

Definition at line 195 of file date_field_renderer.inc.

196  {
197  return DateTypeRenderer::format($value, $this->template);
198  }
static format($date, $template="")

◆ renderDateRangeReadOnly()

DateFieldRenderer::renderDateRangeReadOnly (   $field,
  $date_from,
  $date_to 
)

Definition at line 171 of file date_field_renderer.inc.

172  {
173  $label = $this->parent->layout->getLabel($field, $this);
174 
175  if($date_from && $date_to)
176  {
177  $toLabel = (preg_match("/Between/i", $label)) ? "and" : "to";
178  }
179  else if($date_from && !$date_to)
180  {
181  $this->label = preg_replace("/Between/i", "From", $label);
182  }
183  else // date to and no date_from
184  {
185  $this->label = preg_replace("/(Between)|(From)/i", "Up To", $label);
186  }
187  echo "<tr>\n";
188  $this->_printLabel($field);
189  echo "<td";
190  if ($this->parent->valueCSS) echo " class='{$this->parent->valueCSS}'";
191  echo ">".$this->format($date_from). "&nbsp;<label for='date_to'>$toLabel</label>&nbsp;" . $this->format($date_to) ."</td>\n";
192  echo "</tr>\n";
193  }
_printLabel($field, $colspan=1, $styles="", $annotation="")
Internal method to generate the HTML for the field label.

◆ renderField()

DateFieldRenderer::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 90 of file date_field_renderer.inc.

91  {
92  $obj = $this->parent->data;
93  if ($obj instanceof CompositeDataItem)
94  {
95  $obj = $obj->findSubObject($field);
96  }
97  $date = $obj->format("{{$field}:m/d/Y}");
98 
99  $onchange = ($this->onChange) ? "onchange='$this->onChange(this)'" : "";
100  $oninput = ($this->onInput) ? "oninput='$this->onInput(this)'" : "";
101 
102  $this->_startField($field);
103  echo "<input id='{$this->parent->id}_{$field}' type='text' name='$field' value='$date' $onchange $oninput style='width: auto' class='date' size='12'>&nbsp;<img src='{$this->parent->componentPath}/calendar/calendar.gif' alt='Popup Calendar' align='absmiddle' border='0' onclick='{$this->parent->id}_{$field}_calendar.toggle(this)'>\n";
104  $this->_endField($field);
105  }
$onInput
optional javascript callback for 'input' event on date text field
$onChange
optional javascript callback for 'change' event on date text field
_startField($field, $styles="")
Internal method to generate the starting HTML for the field (including the label)
_endField($field)
Internal method to generate the closing HTML for the field.

◆ renderReadOnly()

DateFieldRenderer::renderReadOnly (   $field)

Definition at line 162 of file date_field_renderer.inc.

163  {
164  $this->_startField($field);
165 
166  echo $this->format($this->parent->data->get($field));
167 
168  $this->_endField($field);
169  }

◆ renderScript()

DateFieldRenderer::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 73 of file date_field_renderer.inc.

74  {
75  $script = "";
76 
77 // if (!$this->_includedDateScript)
78 // {
79 // echo "<script src='{$this->parent->componentPath}/calendar/sonjara_calendar.js' type='text/javascript'></script>\n";
80 // echo "<link href='{$this->parent->componentPath}/calendar/sonjara_calendar.css' type='text/css' rel='stylesheet'>\n";
81 // $this->_includedDateScript = true;
82 // }
83 
84  $calendar = "{$this->parent->id}_{$field}_calendar";
85  echo "<script type='text/javascript'>\n";
86  echo "var $calendar = new Calendar('$calendar', '', '{$this->parent->id}_{$field}');\n";
87  echo "</script>\n";
88  }

◆ renderSearchField()

DateFieldRenderer::renderSearchField (   $field,
  $mode 
)

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 137 of file date_field_renderer.inc.

138  {
139  $this->_startField($field);
140 
141  if ($mode == "range")
142  {
143  $label = $this->parent->layout->getLabel($field, $this);
144  $toLabel = (preg_match("/Between/i", $label)) ? "and" : "to";
145 
146  $date_from = $this->parent->params->get($field, "from");
147  $date_to = $this->parent->params->get($field, "to");
148  echo "<input type='text' name='$field:from' value='$date_from' class='date' size='12'>&nbsp;<img src='{$this->parent->componentPath}/calendar/calendar.gif' alt='Popup Calendar' align='absmiddle' border='0' onclick='{$field}_calendar_from.toggle(this)'>";
149  echo "&nbsp;<label for='date_to'>$toLabel</label>&nbsp;";
150  echo "<input type='text' name='$field:to' value='$date_to' class='date' size='12'>&nbsp;<img src='{$this->parent->componentPath}/calendar/calendar.gif' alt='Popup Calendar' align='absmiddle' border='0' onclick='{$field}_calendar_to.toggle(this)'>\n";
151  }
152  else
153  {
154  $date = $this->parent->params->get($field, $mode);
155 
156  echo "<input type='text' name='$field:$mode' value='$date' class='date' size='12'>&nbsp;<img src='{$this->parent->componentPath}/calendar/calendar.gif' alt='Popup Calendar' align='absmiddle' border='0' onclick='{$field}_calendar_{$mode}.toggle(this)'>\n";
157  }
158 
159  $this->_endField($field);
160  }

◆ renderSearchScript()

DateFieldRenderer::renderSearchScript (   $field,
  $mode 
)

FieldRenderers can override this method to provide any Javascript that the control requires when being used in a search form.

Parameters
string$fieldthe field name
string$modethe search mode for the specific field ('equal', 'like', 'from', 'to', 'range')

Reimplemented from FieldRenderer.

Definition at line 107 of file date_field_renderer.inc.

108  {
109  $script = "";
110 
111  if (!$this->_includedDateScript)
112  {
113  echo "<script src='{$this->parent->componentPath}/calendar/sonjara_calendar.js' type='text/javascript'></script>\n";
114  echo "<link href='{$this->parent->componentPath}/calendar/sonjara_calendar.css' type='text/css' rel='stylesheet'>\n";
115  $this->_includedDateScript = true;
116  }
117 
118  if ($mode == "range")
119  {
120  $calendar_from = "{$field}_calendar_from";
121  $calendar_to = "{$field}_calendar_to";
122 
123  echo "<script type='text/javascript'>\n";
124  echo "var $calendar_from = new Calendar('$calendar_from', '{$this->parent->id}', '$field:from');\n";
125  echo "var $calendar_to = new Calendar('$calendar_to', '{$this->parent->id}', '$field:to');\n";
126  echo "</script>\n";
127  }
128  else
129  {
130  $calendar = "{$field}_calendar_{$mode}";
131  echo "<script type='text/javascript'>\n";
132  echo "var $calendar = new Calendar('$calendar', '{$this->parent->id}', '$field:$mode');\n";
133  echo "</script>\n";
134  }
135  }

Member Data Documentation

◆ $onChange

DateFieldRenderer::$onChange = ""

optional javascript callback for 'change' event on date text field

Definition at line 51 of file date_field_renderer.inc.

◆ $onInput

DateFieldRenderer::$onInput = ""

optional javascript callback for 'input' event on date text field

Definition at line 52 of file date_field_renderer.inc.

◆ $template

DateFieldRenderer::$template = ""

template for date display in readonly mode - default reaonly format is short style

Definition at line 53 of file date_field_renderer.inc.

◆ $validator

DateFieldRenderer::$validator

Definition at line 50 of file date_field_renderer.inc.


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