diff --git a/Admin/Install/Navigation.php b/Admin/Install/Navigation.php index 22a8e8d..58c7aa9 100755 --- a/Admin/Install/Navigation.php +++ b/Admin/Install/Navigation.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Admin\Install; -use phpOMS\DataStorage\Database\DatabasePool; +use phpOMS\Application\ApplicationAbstract; /** * Navigation class. @@ -30,14 +30,14 @@ class Navigation * Install navigation providing * * @param string $path Module path - * @param DatabasePool $dbPool Database pool for database interaction + * @param ApplicationAbstract $app Application * * @return void * * @since 1.0.0 */ - public static function install(string $path, DatabasePool $dbPool) : void + public static function install(string $path, ApplicationAbstract $app) : void { - \Modules\Navigation\Admin\Installer::installExternal($dbPool, ['path' => __DIR__ . '/Navigation.install.json']); + \Modules\Navigation\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/Navigation.install.json']); } } diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index e850aba..bcbafda 100755 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -54,6 +54,18 @@ return [ ], ], + '^.*/admin/settings/design(\?.*|$)' => [ + [ + 'dest' => '\Modules\Admin\Controller\ApiController:apiSettingsDesignSet', + 'verb' => RouteVerb::SET, + 'permission' => [ + 'module' => ApiController::MODULE_NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionState::SETTINGS, + ], + ], + ], + '^.*/admin/group$' => [ [ 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupCreate', diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 69e2211..34802ca 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -30,6 +30,7 @@ use Modules\Admin\Models\NullAccount; use Modules\Admin\Models\PermissionState; use Modules\Media\Models\Collection; use Modules\Media\Models\CollectionMapper; +use Modules\Media\Models\UploadFile; use phpOMS\Account\AccountStatus; use phpOMS\Account\AccountType; use phpOMS\Account\GroupStatus; @@ -432,6 +433,34 @@ final class ApiController extends Controller $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully modified', $l11n); } + /** + * 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 apiSettingsDesignSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $uploadedFiles = $request->getFiles() ?? []; + + if (!empty($uploadedFiles)) { + $upload = new UploadFile(); + $upload->preserveFileName = false; + $upload->soutputDir = __DIR__ . '/../../../Web/Backend/img'; + + $status = $upload->upload($uploadedFiles, 'logo.png', true); + } + + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Design', 'Design successfully updated', []); + } + /** * Api method to install a application * @@ -445,7 +474,7 @@ final class ApiController extends Controller * * @since 1.0.0 */ - public static function apiInstallApplication(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + public function apiInstallApplication(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { $appManager = new ApplicationManager($this->app->moduleManager); @@ -461,7 +490,7 @@ final class ApiController extends Controller $request->getData('theme') ?? 'Default' ); - self::apiActivateTheme($request, $response); + $this->apiActivateTheme($request, $response); } /** @@ -477,7 +506,7 @@ final class ApiController extends Controller * * @since 1.0.0 */ - public static function apiActivateTheme(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + public function apiActivateTheme(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { if (\is_dir(__DIR__ . '/../../../' . $request->getData('appDest') . '/css')) { Directory::delete(__DIR__ . '/../../../' . $request->getData('appDest') . '/css'); diff --git a/Theme/Backend/settings-general.tpl.php b/Theme/Backend/settings-general.tpl.php index 38c8654..86c0fce 100755 --- a/Theme/Backend/settings-general.tpl.php +++ b/Theme/Backend/settings-general.tpl.php @@ -46,6 +46,7 @@ $l11n = $this->getData('defaultlocalization') ?? new NullLocalization();
  • +
  • @@ -728,5 +729,41 @@ $l11n = $this->getData('defaultlocalization') ?? new NullLocalization();
    + request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>> +
    +
    +
    +
    +
    getHtml('Images'); ?>
    +
    +
    + +
    + <?= $this->getHtml('LoginImage'); ?> + +
    +
    +
    +
    +
    +
    +