Framework  3.9
RelatedImageSelectFieldRenderer Class Reference

Field renderer for selected related items from a list of images. More...

+ Inheritance diagram for RelatedImageSelectFieldRenderer:
+ Collaboration diagram for RelatedImageSelectFieldRenderer:

Public Member Functions

 RelatedImageSelectFieldRenderer (&$form, $field, $label, $relatedClass, $constraint, $imageField, $valueField="")
 
 renderField ($field)
 FieldRenderers must override this method to provide the HTML implementation of the control used to edit the field. More...
 
 renderScript ($field)
 FieldRenderers can override this method to provide any Javascript that their control requires for an edit 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)
 
 getRelatedItems ()
 
 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...
 
- 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...
 
 addValidatorsToForm ($field, $required=false)
 This method is called by the AutoForm to add any default input validators that are required by the FieldRenderer. 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

 $items
 
 $default
 
 $field
 
 $imageField
 
 $valueField
 
 $relatedClass
 
 $constraint
 
 $onChange
 
- 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 selected related items from a list of images.

Renders as a custom drop-down-list style control, implemented via Javascript.

Definition at line 44 of file related_image_select_field_renderer.inc.

Member Function Documentation

◆ getRelatedItems()

RelatedImageSelectFieldRenderer::getRelatedItems ( )

Definition at line 202 of file related_image_select_field_renderer.inc.

203  {
204  $this->items = query($this->relatedClass, $this->constraint);
205  if ($this->allowNone)
206  {
207  $this->items = array_merge(array(new $this->relatedClass), $this->items);
208  }
209  return $this->items;
210  }
query($class)
Performs a query against the database, returning an array of DataItem objects of the specified class.
Definition: query.inc:373

◆ preProcess()

RelatedImageSelectFieldRenderer::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 213 of file related_image_select_field_renderer.inc.

214  {
215  /*trace("RelatedItemSelectFieldRenderer::process()", 3);
216 
217  $item = new $this->relatedClass;
218 
219  if (!$this->allowAdd) return;
220  $valueField = $valueField ? $this->valueField : $item->primary_key;
221  $field = "autoform_add_$valueField";
222  $val = $_POST[$field];
223 
224  trace("Checking for value '$val' in field $field", 3);
225 
226  if ($val)
227  {
228  foreach($this->items as $item)
229  {
230  if ($val == $this->formatName($item, $this->nameField))
231  {
232  $this->data->$valueField = $item->$valueField;
233  return;
234  }
235  }
236 
237  $obj = new $this->relatedClass;
238  $pk = $obj->primary_key;
239 
240  $nameField = $this->nameField;
241 
242  $obj->$nameField = $val;
243  $obj->save();
244  $this->parent->data->$valueField = $obj->$pk;
245  }*/
246  }

◆ RelatedImageSelectFieldRenderer()

RelatedImageSelectFieldRenderer::RelatedImageSelectFieldRenderer ( $form,
  $field,
  $label,
  $relatedClass,
  $constraint,
  $imageField,
  $valueField = "" 
)

Definition at line 55 of file related_image_select_field_renderer.inc.

56  {
57  $this->relatedClass = $relatedClass;
58  $this->constraint = $constraint;
59  $this->field = $field;
60  $this->imageField = $imageField;
61  $this->valueField = $valueField;
62  $this->allowAdd = $allowAdd;
63  $this->allowNone = $allowNone;
64  $this->max_chars = $maxChars;
65 
66  $this->getRelatedItems();
67 
68  $this->FieldRenderer($form);
69  $form->override($field, $label, $this);
70  }
FieldRenderer($parent)
Constructor.

◆ renderField()

RelatedImageSelectFieldRenderer::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 72 of file related_image_select_field_renderer.inc.

73  {
74 
75  $obj =& $this->parent->data;
76  $imgField = $this->imageField;
77 
78  if ($obj->$field)
79  {
80  $related = $obj->getRelated($this->relatedClass, $field);
81  $valueField = ($this->valueField != "") ? $this->valueField : $related->getPrimaryKey();
82  //trace("valueField: $valueField", 3);
83  $img = "<img src='".$related->get($imgField)."'/>";
84  }
85  else
86  {
87  $img = "Click to Select";
88  }
89 
90  $this->_startField($field);
91  echo "<input id='{$this->parent->id}_{$field}' type='hidden' name='$field' value='".$this->parent->data->get($field)."'><button name='{$field}_button' class='{$this->parent->buttonCSS}' onclick='{$field}_toggle(); return false;'>$img</button>";
92 
93  echo "<div style='display: none; position: absolute' id='{$field}_options'>";
94 
95  $items = $this->getRelatedItems();
96 
97  foreach($items as $item)
98  {
99  $valueField = ($this->valueField != "") ? $this->valueField : $item->getPrimaryKey();
100 
101  //trace("valueField: $valueField imageField: $imgField", 3);
102  echo "<img style='cursor: pointer; float: left' src='{$item->$imgField}' onclick='{$field}_select(\"{$item->$valueField}\", \"{$item->$imgField}\"); return false;'/>";
103  }
104 
105  echo "</div>";
106  $this->_endField($field);
107 
108  }
_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()

RelatedImageSelectFieldRenderer::renderReadOnly (   $field)

Definition at line 178 of file related_image_select_field_renderer.inc.

179  {
180  echo "<tr>\n";
181  $this->_printLabel($field);
182  echo "<td";
183  if ($this->parent->valueCSS) echo " class='{$this->parent->valueCSS}'";
184  echo ">";
185 
186  /*foreach($this->items as $item)
187  {
188  $valueField = $this->valueField ? $this->valueField : $item->primary_key;
189 
190  if ($this->parent->data->$field == $item->$valueField)
191  {
192  $name = $this->formatName($item, $this->nameField);
193  echo $name;
194  break;
195  }
196  }*/
197 
198  echo "</td>\n";
199  echo "</tr>\n";
200  }
_printLabel($field, $colspan=1, $styles="", $annotation="")
Internal method to generate the HTML for the field label.

◆ renderScript()

RelatedImageSelectFieldRenderer::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 110 of file related_image_select_field_renderer.inc.

111  {
112 ?>
113 <script type='text/javascript'>
114 /* <![CDATA[ */
115  function <?echo $field ?>_select(value, image)
116  {
117  var form = document.getElementById('<?echo $this->parent->id ?>');
118  var ctrl = form['<?echo $field ?>'];
119  var button = form['<?echo $field ?>_button'];
120  ctrl.value = value;
121  button.innerHTML = "<img src='" + image + "'/>";
122  <?echo $field ?>_hide();
123 <? if ($this->onChange)
124 { ?>
125  <?echo $this->onChange ?>(value, image);
126 <?
127 }
128  ?>
129  }
130 
131  function <?echo $field ?>_toggle()
132  {
133  var div = document.getElementById('<?echo $field ?>_options');
134  if (div.style.display == 'none')
135  {
136  div.style.display = 'block';
137  }
138  else
139  {
140  div.style.display = 'none';
141  }
142  }
143 
144  function <?echo $field ?>_hide()
145  {
146  var div = document.getElementById('<?echo $field ?>_options');
147  div.style.display = 'none';
148  }
149 
150 // ]]>
151 </script>
152 <?
153  }

◆ renderSearchField()

RelatedImageSelectFieldRenderer::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 154 of file related_image_select_field_renderer.inc.

155  {
156  /*if ($mode != "equal") return;
157 
158  echo "<tr>\n";
159  $this->_printLabel($field);
160  echo "<td><select name='{$field}:$mode'>\n";
161  echo "<option value=''></option>\n";
162  $valueField = ($this->valueField != "") ? $this->valueField : $item->primary_key;
163  //trace("valueField: $valueField", 3);
164 
165  $value = $this->parent->params->get($field, $mode);
166 
167  foreach($this->items as $item)
168  {
169  $name = $this->formatName($item, $this->nameField);
170 
171  echo "<option value='{$item->$valueField}'";
172  if ($item->$valueField == $value) echo " selected";
173  echo ">".ellipsis($name, $this->max_chars)."</option>\n";
174  }
175  echo "</select>";*/
176  }

Member Data Documentation

◆ $constraint

RelatedImageSelectFieldRenderer::$constraint

Definition at line 52 of file related_image_select_field_renderer.inc.

◆ $default

RelatedImageSelectFieldRenderer::$default

Definition at line 47 of file related_image_select_field_renderer.inc.

◆ $field

RelatedImageSelectFieldRenderer::$field

Definition at line 48 of file related_image_select_field_renderer.inc.

◆ $imageField

RelatedImageSelectFieldRenderer::$imageField

Definition at line 49 of file related_image_select_field_renderer.inc.

◆ $items

RelatedImageSelectFieldRenderer::$items

Definition at line 46 of file related_image_select_field_renderer.inc.

◆ $onChange

RelatedImageSelectFieldRenderer::$onChange

Definition at line 53 of file related_image_select_field_renderer.inc.

◆ $relatedClass

RelatedImageSelectFieldRenderer::$relatedClass

Definition at line 51 of file related_image_select_field_renderer.inc.

◆ $valueField

RelatedImageSelectFieldRenderer::$valueField

Definition at line 50 of file related_image_select_field_renderer.inc.


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