cms/app/Presenters/Admin/MediaSelectionFieldPresenter.php

61 lines
2.1 KiB
PHP

<?php
namespace App\Presenters\Admin;
use App\Repositories\MediaFileRepository;
class MediaSelectionFieldPresenter
{
public function render($mediaFileId = null, $inputHtmlArgs = [], $wrapperClasses = [])
{
$presenter = app('Html');
$mediaFileRepo = app(MediaFileRepository::class);
$mediaFile = $mediaFileRepo->findModel($mediaFileId);
$previewImgHtml = '';
$mediaFieldContentHtml = '';
if($mediaFile) {
$previewImgHtml = $presenter->img([
'src' => $mediaFile->url
]);
}
$mediaFieldContentHtml .= $presenter->input(array_merge([
'type' => 'hidden',
'class' => 'input',
'value' => $mediaFileId
], $inputHtmlArgs));
$mediaFieldContentHtml .= $presenter->div([
'class' => 'form-group row',
'html' => $presenter->div([
'class' => 'col-6',
'html' => $presenter->div([
'class' => 'preview',
'html' => $previewImgHtml
])
])
]);
$mediaFieldContentHtml .= $presenter->div([
'class' => 'form-group row',
'html' => [
$presenter->div([
'class' => 'col-3',
'html' => $presenter->button([
'class' => ['btn', 'btn-success', 'select-media'],
'html' => trans('form.buttons.select')
])
]),
$presenter->div([
'class' => 'col-3',
'html' => $presenter->button([
'class' => ['btn', 'btn-danger', 'clear-media'],
'style' => !$mediaFile ? 'display:none;' : '',
'html' => trans('form.buttons.remove')
])
])
]
]);
return $presenter->div([
'class' => array_merge($wrapperClasses, ['media-selection-field']),
'html' => $mediaFieldContentHtml
]);
}
}