fix profile image upload

This commit is contained in:
Dennis Eichhorn 2020-04-19 15:37:10 +02:00
parent d14df036df
commit 347ec9e8d7
3 changed files with 49 additions and 1 deletions

View File

@ -31,4 +31,15 @@ return [
],
],
],
'^.*/profile/settings/image(\?.*|$)' => [
[
'dest' => '\Modules\Profile\Controller\ApiController:apiSettingsAccountImageSet',
'verb' => RouteVerb::SET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::PROFILE,
],
],
],
];

View File

@ -119,4 +119,41 @@ final class ApiController extends Controller
return $profiles;
}
/**
* Routing end-point for application behaviour.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiSettingsAccountImageSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$uploadedFiles = $request->getFiles() ?? [];
if (empty($uploadedFiles)) {
return;
}
$profile = ProfileMapper::getFor($request->getHeader()->getAccount(), 'account');
$old = clone $profile;
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
$request->getData('name') ?? '',
$uploadedFiles,
$request->getHeader()->getAccount(),
__DIR__ . '/../../../Modules/Media/Files/Accounts/' . $request->getHeader()->getAccount()
);
$profile->setImage(\reset($uploaded));
$this->updateModel($request->getHeader()->getAccount(), $old, $profile, ProfileMapper::class, 'profile');
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Profile', 'Profile successfully updated', $profile);
}
}

View File

@ -75,7 +75,7 @@ echo $this->getData('nav')->render();
$profile->getImage() instanceof NullMedia ?
UriFactory::build('Web/Backend/img/user_default_' . \mt_rand(1, 6) .'.png') :
UriFactory::build('{/prefix}' . $profile->getImage()->getPath()); ?>"
></div>
width="100px"></div>
<?php if ($this->request->getHeader()->getAccount() === $account->getId()) : ?>
<div><a id="iProfileUploadButton" href="#upload" data-action='[{"listener": "click", "key": 1, "action": [{"key": 1, "type": "event.prevent"}, {"key": 2, "type": "dom.click", "selector": "#iProfileUpload"}]}]'>Change</a>
<form id="iProfileUploadForm" action="<?= UriFactory::build('{/api}profile/settings/image'); ?>" method="post"><input data-action='[{"listener": "change", "key": 1, "action": [{"key": 1, "type": "form.submit", "selector": "#iProfileUploadForm"}]}]' id="iProfileUpload" name="profileImage" type="file" style="display: none;"></form></div>