/** * Render list item * * @param string $relationId The relationship identity * @param BaseModel $item Record object. * @return Element('li') */ public function renderItem($relationId, $subset, $item, $on = false) { $id = $item->id; $li = new Element('li'); $label = new Label(); $hiddenId = new HiddenInput("{$relationId}[{$id}][_foreign_id]", array('value' => $id)); $checkboxValue = $on ? 1 : 0; $checkbox = new CheckboxInput("{$relationId}[{$id}][_connect]", array('value' => $checkboxValue)); if ($on) { $checkbox->check(); } $label->append($checkbox); $label->append($item->dataLabel()); $label->append($hiddenId); $li->append($label); return $li; }
/** * HTML structure * * <div class="formkit-widget formkit-widget-thumbimagefile formkit-image-wrapper"> * <div class="formkit-image-cover"> * <img src="...."/> * </div> * <input type="file"...> * </div> * */ public function init($attributes) { $this->autoresize_types = array(_('Fit to Width') => 'max_width', _('Fit to Height') => 'max_height', _('Scale') => 'scale', _('Crop and Scale') => 'crop_and_scale'); parent::init($attributes); $this->fileInput = new FileInput($this->name, $attributes); $this->imageCover = new Div(array('class' => 'formkit-image-cover')); $this->imageCover->setAttributeValue('data-width', $this->dataWidth ?: 200); $this->imageCover->setAttributeValue('data-height', $this->dataHeight); $this->inputWrapper = new Div(); $this->inputWrapper->addClass('formkit-widget-thumbimagefile')->addClass('formkit-image-wrapper'); // if it has a value, generate img if ($this->renderImageTag && $this->value) { $this->image = new Element('img', array('src' => $this->prefix . $this->value)); $this->imageCover->append($this->image); } if ($this->value) { $this->fileInput->setAttributeValue('data-image-src', $this->prefix . $this->value); } if ($this->exif) { $this->fileInput->setAttributeValue('data-exif', 'true'); } if ($this->autoresize) { $this->fileInput->setAttributeValue('data-autoresize', 'true'); } if ($this->droppreview) { $this->fileInput->setAttributeValue('data-droppreview', 'true'); } if ($this->dropupload) { $this->fileInput->setAttributeValue('data-dropupload', 'true'); } $this->fileInput->setAttributeValue('data-width', $this->dataWidth); $this->fileInput->setAttributeValue('data-height', $this->dataHeight); $this->inputWrapper->append($this->imageCover); $this->inputWrapper->append($this->fileInput); if ($this->autoresize && $this->autoresize_input) { $this->fileInput->setAttributeValue('data-autoresize-input', 'true'); $checkbox = new CheckboxInput($this->name . '_autoresize'); $checkbox->addClass('autoresize-checkbox'); if ($this->autoresize_input_check) { $checkbox->check(); } $checkboxId = $checkbox->getSerialId(); $label = new Label(_("Use auto-resize")); $label->for($checkboxId); $resizeWrapper = new Div(); $resizeWrapper->append($checkbox); $resizeWrapper->append($label); $resizeWrapper->addClass("autoresize"); $this->inputWrapper->append($resizeWrapper); if ($this->autoresize_type_input) { $resizeTypeWrapper = new Div(); $resizeTypeWrapper->addClass('autoresize-type'); $typeSelector = new SelectInput($this->name . '_autoresize_type', ['options' => $this->autoresize_types, 'value' => $this->autoresize_type]); $typeSelector->addClass('autoresize-type-selector'); $resizeTypeWrapper->append($typeSelector); $this->inputWrapper->append($resizeTypeWrapper); } } }