core/modules/_core/template/crud/field/multiple.phtml
<?php
/* @var $this Ajde_Template_Parser_Phtml_Helper */
$this->requireJsPublic('core/fancybox/jquery.fancybox.pack.js');
$this->requireCssPublic('core/fancybox/jquery.fancybox.css');
/* @var $field Ajde_Crud_Field_Multiple */
$field = $this->field;
?>
<input
<?php echo $field->getHtmlAttributes(); ?>
/>
<div
class='multiple <?php if ($field->hasHideInIframe()) { echo 'hideInIframe'; } ?>'
data-edit-route='<?php echo $field->has('editRouteFunction') ? $field->getCrud()->getModel()->{$field->get('editRouteFunction')}() : $field->getEditRoute(); ?>'
data-field='<?php echo $field->getName(); ?>'
data-parent='<?php echo $field->has('parent') ? $field->get('parent') : (string) $field->getCrud()->getModel()->getTable(); ?>'
<?php // data-parent-id='<? php echo $field->getCrud()->getModel()->getPK(); ? >' ?>
data-dynamic='<?php echo ($field->hasTableFields() ? '1' : '0'); ?>'
data-simple='<?php echo ($field->hasSimpleSelector() && $field->getSimpleSelector() ? '1' : '0'); ?>'
<?php
if ($field->hasPrefillField()) { ?>
data-prefill='<?php echo implode(',', array_keys($field->getPrefillField())); ?>'
<?php foreach ($field->getPrefillField() as $fieldName => $value) { ?>
data-prefill-<?php echo $fieldName; ?>='<?php echo esc($value); ?>'
<?php }
} ?>
>
<?php if ($field->hasSimpleSelector() && $field->getSimpleSelector()) { // simple ?>
<div class="controls-row simple-selector">
<a href='javascript:void(null);' class='span2 btn btn-success new newMultiple' data-select='<?php echo $field->getName(); ?>'><i class='icon-plus icon-white'></i></a>
<div class='input'>
<?php $children = $field->getChildren();
$ids = array();
foreach($children as $child) {
$ids[] = $child->getPK();
}
// Prepend ids to values
$values = [];
$remaining = $field->getValues()->load();
foreach($ids as $id) {
$currentIteration = [];
foreach($remaining as $model) {
if ($id == $model->getPK()) {
$values[] = $model;
} else {
$currentIteration[] = $model;
}
}
$remaining = $currentIteration;
}
$values = array_merge($values, $remaining);
?>
<select class='selectize' name='<?php echo $field->getName(); ?>[]' multiple='multiple' data-placeholder="<?php echo trans('Choose some options'); ?>">
<?php foreach($values as $model) {
/* @var $model Ajde_Model */ ?>
<option value='<?php echo $model->getPK(); ?>' <?php if (in_array($model->getPK(), $ids)) { echo 'selected="selected"'; } ?> >
<?php echo $model->get($model->getDisplayField()); ?>
</option>
<?php } ?>
</select>
</div>
</div>
<?php } else { // advanced ?>
<div class='multipleToolbar'>
<a href='javascript:void(null);' class='btn btn-success new newMultiple' data-select='<?php echo $field->getName(); ?>'><i class='icon-plus icon-white'></i></a>
<?php if ($field->hasCrossReferenceTable()) { ?>
<span class="or">or</span>
<?php if ($field->has('usePopupSelector') && $field->get('usePopupSelector')) {
$this->requireJs('crud/field/picker');
$this->requireCss('crud/field/picker');
$pickerMultiple = 1;
$pickerType = 'multiple';
include 'picker.phtml';
?>
<?php } else { ?>
<div class='btn-group'>
<select class='selectize' name='<?php echo $field->getName(); ?>' data-placeholder="<?php echo trans('Choose existing'); ?>">
<option value='' class='choose'></option>
<?php foreach($field->getValues() as $model) {
/* @var $model Ajde_Model */ ?>
<option value='<?php echo $model->getPK(); ?>'>
<?php echo $model->get($model->getDisplayField()); ?>
</option>
<?php } ?>
</select>
<a href='javascript:void(null);' class='btn add addMultiple'><i class='icon-ok icon-white'></i></a>
</div>
<?php } ?>
<?php } ?>
</div>
<?php $this->requireCss('crud/list'); ?>
<table class='table table-striped table-hover crud multipleList <?php if ($field->hasHideMainColumn() && $field->getHideMainColumn()) { echo 'hideMainColumn'; }?>'>
<thead>
<tr>
<th class='main'><?php echo $field->getModel()->getTable()->getFieldProperties($field->getModel()->getDisplayField(), 'label'); ?></th>
<?php if ($field->hasTableFields()) {
foreach ($field->getTableFields() as $extraField) {
if ($extraField['type'] == 'meta') {
$meta = new MetaModel();
$meta->loadByPK($extraField['name']); ?>
<th><?php echo $meta->getName(); ?></th>
<?php } else { ?>
<th><?php echo $field->getModel()->getTable()->getFieldProperties($extraField['name'], 'label'); ?></th>
<?php }
}
} ?>
<th></th>
</tr>
</thead>
<tbody>
<tr class='template'>
<td></td>
<td class='main'></td>
<?php if ($field->hasTableFields()) {
foreach ($field->getTableFields() as $extraField) {
if ($extraField['type'] == 'sort') {
$sortTable = $field->getCrud()->getModel()->getTable();
$pk = $sortTable->getPK();
if ($field->hasCrossReferenceTable()) {
$sortTable = $field->getCrossReferenceTable();
$pk = $field->getCrossReferenceTable() . '.id';
}
$this->requireJsPublic('core/jquery.tablednd.js', Ajde_Document_Format_Html::RESOURCE_POSITION_FIRST); ?>
<td class='sort'
data-table='<?php echo $sortTable; ?>'
data-field='<?php echo $extraField['name']; ?>'
data-pk='<?php echo $pk; ?>'
>
<span class="icon-move"></span>
</td>
<?php } else { ?>
<td></td>
<?php } ?>
<?php }
} ?>
<td class='buttons'>
<div class='btn-group'>
<a href='javascript:void(null);' class='btn editMultiple' data-id=''><i class='icon-pencil icon-white'></i></a>
<a href='javascript:void(null);' class='btn btn-<?php echo ($field->hasCrossReferenceTable()) ? 'warning' : 'danger'; ?> deleteMultiple' data-id=''>
<i class='icon-<?php echo ($field->hasCrossReferenceTable()) ? 'minus' : 'trash'; ?> icon-white'></i>
</a>
</div>
</td>
</tr>
<?php foreach($field->getChildren() as $child) {
/* @var $child Ajde_Model */ ?>
<?php
// TODO: side effects?
// $child->loadParents();
$pk = $child->getPK();
if ($field->hasCrossReferenceTable()) {
$pk = $child->get('crossId');
} ?>
<tr id="row-<?php echo $pk; ?>" data-id='<?php echo $child->getPK(); ?>'>
<td><?php echo $child->getPK(); ?></td>
<td class='main'>
<?php
$value = $child->get($child->getDisplayField());
if ($value instanceof Ajde_Model && $value->hasLoaded()) {
echo $value->get($value->getDisplayField());
} else {
echo $value;
} ?>
</td>
<?php if ($field->hasTableFields()) {
foreach ($field->getTableFields() as $extraField) {
$value = $child->has($extraField['name']) ? $child->get($extraField['name']) : false;
$type = $extraField['type'];
if ($type == 'file' && $value) { ?>
<td>
<?php
$extension = pathinfo($value, PATHINFO_EXTENSION);
if ($isImage = in_array(strtolower($extension), array('jpg', 'jpeg', 'png', 'gif'))) {
$thumbDim = $field->hasThumbDim() ? $field->getThumbDim() : array('width' => 75, 'height' => 75); ?>
<a class='imagePreview img' title='<?php echo esc($value); ?>' href='<?php echo $extraField['saveDir'] . $value; ?>' target='_blank'>
<?php echo $this->ACImage(array(
'filename' => $extraField['saveDir'] . $value,
'width' => $thumbDim['width'],
'height' => $thumbDim['height'],
'crop' => true
)); ?>
</a>
<?php } else { ?>
<img class='icon' src='<?php echo Ajde_Resource_FileIcon::_($extension); ?> ' />
<a class='filePreview preview' href='<?php echo $extraField['saveDir'] . $value; ?>' target='_blank'><?php echo $value; ?></a>
<?php } ?>
</td>
<?php } else if ($type == 'file') { ?>
<td></td>
<?php } else if ($type == 'sort') {
$sortTable = $field->getCrud()->getModel()->getTable();
$pk = $sortTable->getPK();
if ($field->hasCrossReferenceTable()) {
$sortTable = $field->getCrossReferenceTable();
$pk = $field->getCrossReferenceTable() . '.id';
} ?>
<td class='sort'
data-table='<?php echo $sortTable; ?>'
data-field='<?php echo $extraField['name']; ?>'
data-pk='<?php echo $pk; ?>'
>
<span class='icon-move'></span>
</td>
<?php } else if ($type == 'meta') {
$value = $child->getMetaValue($extraField['name']);
if ($extraField['function'] !== false) {
$value = $child->{$extraField['function']}();
} ?>
<td><?php echo $value; ?></td>
<?php } else { ?>
<td>
<?php $value = $child->get($extraField['name']);
if ($value instanceof Ajde_Model && $value->hasLoaded()) {
echo $value->get($value->getDisplayField());
} else {
echo $value;
} ?>
</td>
<?php }
}
} ?>
<td class='buttons'>
<div class='btn-group'>
<a href='javascript:void(null);' class='btn btn-small editMultiple' data-id='<?php echo $child->getPK(); ?>'><i class='icon-pencil icon-white'></i></a>
<a href='javascript:void(null);' class='btn btn-small btn-<?php echo ($field->hasCrossReferenceTable()) ? 'warning' : 'danger'; ?> deleteMultiple' data-id='<?php echo $child->getPK(); ?>'>
<i class='icon-<?php echo ($field->hasCrossReferenceTable()) ? 'minus' : 'trash'; ?> icon-white'></i>
</a>
</div>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } // simple or advanced ?>
</div>