CMS  Version 3.9
AttachmentFieldRenderer Class Reference
+ Inheritance diagram for AttachmentFieldRenderer:

Public Member Functions

 AttachmentFieldRenderer (&$form, $field, $xrefClass)
 
 getMatchingPK ($xref, $obj)
 
 renderScript ($field)
 
 renderField ($field="")
 
 renderReadOnly ($field="")
 
 getAttachments ()
 
 drawOneAttachment ($attachment)
 
 postProcess ($field="")
 

Static Public Member Functions

static renderDialog ($useCamera)
 
static renderDialogBody ($useCamera)
 
static formatAttachment ($attachment)
 

Public Attributes

 $colspan = 2
 
 $xrefClass
 
 $field
 
 $label
 
 $cssClass = "attachment"
 
 $deleteIcon = "/fakoli/images/delete.gif"
 
 $useCamera = false
 
 $addLabel = "Add an Attachment"
 
 $emptyMessage = "No files have been attached"
 

Detailed Description

Definition at line 41 of file attachment_field_renderer.inc.

Member Function Documentation

◆ AttachmentFieldRenderer()

AttachmentFieldRenderer::AttachmentFieldRenderer ( $form,
  $field,
  $xrefClass 
)

Definition at line 53 of file attachment_field_renderer.inc.

54  {
55  $this->xrefClass = $xrefClass;
56  $this->field = $field;
57 
58  $this->FieldRenderer($form);
59  $this->label = $form->prettifyFieldName($field);
60  $form->add($this);
61 
62  if (isset($form->attachment_css_class)) $this->cssClass = $form->attachment_css_class;
63  if (isset($form->attachment_delete_icon)) $this->deleteIcon = $form->attachment_delete_icon;
64  }
$form
$table cssClass
$openData field

◆ drawOneAttachment()

AttachmentFieldRenderer::drawOneAttachment (   $attachment)

Reimplemented in PhotoAttachmentFieldRenderer.

Definition at line 230 of file attachment_field_renderer.inc.

231  {
232  $icon = getDocIcon($attachment->filename);
233 ?>
234  <img src="<?echo $icon?>" alt="Icon" style="display:inline-block;vertical-align:middle"/>&nbsp;
235  <a href='/action/attachment/download?attachment_id=<?echo $attachment->attachment_id?>'><?echo $attachment->filename?></a>&nbsp;
236  (<?echo $attachment->file_size?>)
237 <?
238  }
& nbsp
Definition: index.inc:49
$helpTree style
Definition: tree.inc:46
if(! $attachment_id) $attachment
Definition: delete.inc:42
$icon
Definition: upload.inc:92

◆ formatAttachment()

static AttachmentFieldRenderer::formatAttachment (   $attachment)
static

Definition at line 240 of file attachment_field_renderer.inc.

241  {
242  $icon = getDocIcon($attachment->filename);
243 
244  return $attachment->format("<img src='{$icon}' alt='Icon' style='display:inline-block;vertical-align:middle'/>&nbsp;<a href='/action/attachment/download?attachment_id={attachment_id}'>{filename}</a>&nbsp;({file_size})");
245  }

◆ getAttachments()

AttachmentFieldRenderer::getAttachments ( )

Reimplemented in PhotoAttachmentFieldRenderer.

Definition at line 211 of file attachment_field_renderer.inc.

212  {
213  $xref = new $this->xrefClass;
214 
215  $pk = $this->getMatchingPK($xref, $this->parent->data);
216  $pkv = $this->parent->data->get($pk);
217 
218  if ($pkv)
219  {
220  $attachments = query(Attachment, "WHERE attachment_id in (select attachment_id from {$xref->table} where $pk=$pkv) ORDER BY attachment_id");
221  }
222  else
223  {
224  $attachments = array();
225  }
226 
227  return $attachments;
228  }

◆ getMatchingPK()

AttachmentFieldRenderer::getMatchingPK (   $xref,
  $obj 
)

Definition at line 67 of file attachment_field_renderer.inc.

68  {
69  $pks = $obj->getPrimaryKeyList();
70  foreach($pks as $pk)
71  {
72  if ($xref->hasField($pk)) return $pk;
73  }
74 
75  throw new DataItemException("No matching foreign key in xref table");
76  }

◆ postProcess()

AttachmentFieldRenderer::postProcess (   $field = "")

Reimplemented in PhotoAttachmentFieldRenderer.

Definition at line 247 of file attachment_field_renderer.inc.

248  {
249  if (!$field) $field = $this->field;
250 
251  if ($this->parent->readOnlyForm || $this->parent->isReadOnly($field) || array_key_exists($field, $this->parent->hidden)) return "";
252  trace("AttachmentFieldRenderer postProcess field $field value ". $_POST[$field], 3);
253 
254  $xref = new $this->xrefClass;
255 
256  $obj = $this->parent->data;
257  $pk = $this->getMatchingPK($xref, $obj);
258 
259  // Clear out current relations
260 
261  $xref = new $this->xrefClass;
262  $xref->delete("WHERE {$pk}=".$obj->get($pk));
263 
264  if (isset($_POST[$field]))
265  {
266  trace("AttachmentFieldRenderer postProcess _POST attachment field is ". $_POST[$field], 3);
267  $ids = explode(",", $_POST[$field]);
268 
269  foreach($ids as $id)
270  {
271  $xref = new $this->xrefClass;
272  $xref->set($pk, $obj->get($pk));
273  $xref->set("attachment_id", $id);
274  $xref->save();
275  }
276  }
277  else
278  {
279  trace("AttachmentFieldRenderer postProcess _POST attachment field is empty", 3);
280  }
281  }
$_POST["owner_id"]
Definition: blog_form.inc:54

◆ renderDialog()

static AttachmentFieldRenderer::renderDialog (   $useCamera)
static

Definition at line 78 of file attachment_field_renderer.inc.

79  {
80  ob_start();
81 ?>
82 <div class="dialog" id="attachmentDialog" style="width: 260px">
83  <div class="dialog_header" id="attachmentDialogHeader">
84  <div style="padding: 4px;">
85  <div style="float: right">&nbsp;<a id='closeAttachmentDialog'>Close &times;</a></div>
86  <span style="font-weight: bold" id="attachmentDialogTitle">Add an Attachment</span>
87  </div>
88  </div>
89  <div class="dialog_body">
90 <?
92 ?>
93  </form>
94  </div>
95 </div>
96 <?
97  $dialog = ob_get_contents();
98  ob_end_clean();
99  return $dialog;
100  }

◆ renderDialogBody()

static AttachmentFieldRenderer::renderDialogBody (   $useCamera)
static

Definition at line 102 of file attachment_field_renderer.inc.

103  {
104  ob_start();
105 ?>
106  <p id="attachmentDialogMessage"></p>
107  <form id="attachmentForm" method="POST" enctype="multipart/form-data" action="/action/attachment/upload" >
108  <br/>
109  <label>Attachment File</label><br/>
110  <input type="file" name="attachmentFile"<?if ($useCamera) { echo ' accept="image/*" capture="camera"'; }?>/>
111  <br/>
112  <br/><input type="submit" class="button" name="submit" value="Upload Attachment" style="float: right; margin-bottom: 4px"/>
113 <?
114  $body = ob_get_contents();
115  ob_end_clean();
116  return $body;
117  }
$form action
Definition: edit.inc:67

◆ renderField()

AttachmentFieldRenderer::renderField (   $field = "")

Reimplemented in PhotoAttachmentFieldRenderer.

Definition at line 137 of file attachment_field_renderer.inc.

138  {
139  if (!$field) $field = $this->field;
140 
141  $xref = new $this->xrefClass;
142 
143  $this->_startField($field);
144 
145  $attachments = $this->getAttachments();
146 
147  $ids = displayFieldAsList($attachments, "attachment_id");
148 ?>
149  <input type="hidden" value="<?echo $ids?>" name="<?echo $field?>" id="<?echo $this->parent->id?>_<?echo $field?>"/>
150  <ul id="<?echo $this->parent->id?>_<?echo $field?>_list" class="<?echo $this->cssClass?>" style='display: table-cell'>
151  <?
152 
153  foreach($attachments as $attachment)
154  {
155  ?> <li id='attachment_<?echo $attachment->attachment_id?>' class='<?echo $this->cssClass?>'><span>
156  <?php
157  $this->drawOneAttachment($attachment);
158  ?>
159  &nbsp;
160  <a href="#" onclick='new AttachmentUploader().deleteAttachment("<?echo $attachment->filename?>", <?echo $attachment->attachment_id?>); return false' title='Delete this Attachment'><img src='<?echo $this->deleteIcon?>' style='display:inline-block; vertical-align: middle' alt='Delete this Attachment'/></a>
161  </span></li>
162 <?
163  }
164  ?>
165  </ul>
166  <a class='add_attachment_label' href="#" onclick="new AttachmentUploader().addAttachment(); return false"> <?echo $this->addLabel?> </a>
167 <?
168  $this->_endField($field);
169  }
$bookmark title

◆ renderReadOnly()

AttachmentFieldRenderer::renderReadOnly (   $field = "")

Reimplemented in PhotoAttachmentFieldRenderer.

Definition at line 172 of file attachment_field_renderer.inc.

173  {
174  if (!$field) $field = $this->field;
175 
176  $attachments = $this->getAttachments();
177  if(count($attachments) < 2) $this->colspan = 1;
178 
179  $this->_startField($field);
180 
181  if (count($attachments) == 0)
182  {
183  echo "<p>{$this->emptyMessage}</p>";
184  }
185  else if(count($attachments) == 1)
186  {
187  // Omit ul li list if only one
188 
189  $this->drawOneAttachment($attachments[0]);
190  }
191  else if(count($attachments) > 0)
192  {
193 ?>
194  <ul id="<?echo $this->parent->id?>_<?echo $field?>_list" class="<?echo $this->cssClass?>">
195 <?
196  foreach($attachments as $attachment)
197  {
198  ?> <li id='attachment_<?echo $attachment->attachment_id?>' class='<?echo $this->cssClass?>'><span>
199  <?php
200  $this->drawOneAttachment($attachment);
201  ?>
202  </span></li>
203 <?
204  }
205 ?></ul><?php
206  }
207 
208  $this->_endField($field);
209  }
$topicList colspan
Definition: group_form.inc:54

◆ renderScript()

AttachmentFieldRenderer::renderScript (   $field)

Reimplemented in PhotoAttachmentFieldRenderer.

Definition at line 119 of file attachment_field_renderer.inc.

120  {
121  if ($this->parent->readOnlyForm || $this->parent->isReadOnly($field) || array_key_exists($field, $this->parent->hidden)) return "";
122 
123  global $dialogs;
124  if (!$field) $field = $this->field;
125 
126  $dialogs .= AttachmentFieldRenderer::renderDialog($this->useCamera);
127 ?>
128  <script type="text/javascript">
129  window.addEvent('domready', function()
130  {
131  new AttachmentUploader().setup('attachmentForm', '<?echo $this->parent->id?>_<?echo $field?>_list', '<?echo $this->parent->id?>_<?echo $field?>', '<?echo $this->cssClass?>', '<?echo $this->deleteIcon?>');
132  });
133  </script>
134 <?
135  }

Member Data Documentation

◆ $addLabel

AttachmentFieldRenderer::$addLabel = "Add an Attachment"

Definition at line 50 of file attachment_field_renderer.inc.

◆ $colspan

AttachmentFieldRenderer::$colspan = 2

Definition at line 43 of file attachment_field_renderer.inc.

◆ $cssClass

AttachmentFieldRenderer::$cssClass = "attachment"

Definition at line 47 of file attachment_field_renderer.inc.

◆ $deleteIcon

AttachmentFieldRenderer::$deleteIcon = "/fakoli/images/delete.gif"

Definition at line 48 of file attachment_field_renderer.inc.

◆ $emptyMessage

AttachmentFieldRenderer::$emptyMessage = "No files have been attached"

Definition at line 51 of file attachment_field_renderer.inc.

◆ $field

AttachmentFieldRenderer::$field

Definition at line 45 of file attachment_field_renderer.inc.

◆ $label

AttachmentFieldRenderer::$label

Definition at line 46 of file attachment_field_renderer.inc.

◆ $useCamera

AttachmentFieldRenderer::$useCamera = false

Definition at line 49 of file attachment_field_renderer.inc.

◆ $xrefClass

AttachmentFieldRenderer::$xrefClass

Definition at line 44 of file attachment_field_renderer.inc.


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