diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e1e05f8..278096d 100755 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,10 +13,15 @@ on: - cron: '0 0 1,15 * *' jobs: - general_module_workflow: + general_module_workflow_php: uses: Karaka-Management/Karaka/.github/workflows/php_template.yml@develop secrets: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_PAT: ${{ secrets.GH_PAT }} CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - + general_module_workflow_js: + uses: Karaka-Management/Karaka/.github/workflows/js_template.yml@develop + secrets: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_PAT: ${{ secrets.GH_PAT }} + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/Admin/Install/Application/Timerecording/Application.php b/Admin/Install/Application/Timerecording/Application.php deleted file mode 100644 index 000ef75..0000000 --- a/Admin/Install/Application/Timerecording/Application.php +++ /dev/null @@ -1,461 +0,0 @@ -app = $app; - $this->app->appName = 'Timerecording'; - $this->config = $config; - UriFactory::setQuery('/app', \strtolower($this->app->appName)); - } - - /** - * Rendering timerecording. - * - * @param HttpRequest $request Request - * @param HttpResponse $response Response - * - * @return void - * - * @since 1.0.0 - */ - public function run(HttpRequest $request, HttpResponse $response) : void - { - $this->app->l11nManager = new L11nManager(); - - $pageView = new TimerecordingView($this->app->l11nManager, $request, $response); - $head = new Head(); - - $pageView->head = $head; - $response->set('Content', $pageView); - - /* Timerecording only allows GET */ - if ($request->getMethod() !== RequestMethod::GET) { - $this->create406Response($response, $pageView); - - return; - } - - $this->app->dbPool = new DatabasePool(); - $this->app->router = new WebRouter(); - $this->app->router->importFromFile(__DIR__ . '/Routes.php'); - $this->app->router->add( - '/timerecording/e403', - function() use ($request, $response) { - $view = new View($this->app->l11nManager, $request, $response); - $view->setTemplate('/Web/Timerecording/Error/403_inline'); - $response->header->status = RequestStatusCode::R_403; - - return $view; - }, - RouteVerb::GET - ); - - $this->app->sessionManager = new HttpSession(60); - $this->app->cookieJar = new CookieJar(); - $this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../Modules/'); - $this->app->dispatcher = new Dispatcher($this->app); - - $this->app->dbPool->create('select', $this->config['db']['core']['masters']['select']); - - /* Database OK? */ - if ($this->app->dbPool->get()->getStatus() !== DatabaseStatus::OK) { - $this->create503Response($response, $pageView); - - return; - } - - /* CSRF token OK? */ - if ($request->hasData('CSRF') - && !\hash_equals($this->app->sessionManager->data['CSRF'] ?? '', $request->getDataString('CSRF')) - ) { - $response->header->status = RequestStatusCode::R_403; - - return; - } - - /** @var ConnectionAbstract $con */ - $con = $this->app->dbPool->get(); - DataMapperFactory::db($con); - - $this->app->cachePool = new CachePool(); - $this->app->appSettings = new CoreSettings(); - $this->app->eventManager = new EventManager($this->app->dispatcher); - $this->app->accountManager = new AccountManager($this->app->sessionManager); - $this->app->l11nServer = LocalizationMapper::get()->where('id', 1)->execute(); - - $this->app->unitId = $this->getApplicationOrganization($request, $this->config); - $pageView->setData('unitId', $this->app->unitId); - - $aid = Auth::authenticate($this->app->sessionManager); - $request->header->account = $aid; - $response->header->account = $aid; - - $account = $this->loadAccount($request); - - if ($account->id > 0) { - $response->header->l11n = $account->l11n; - } elseif (isset($this->app->sessionManager->data['language']) - && $response->header->l11n->language !== $this->app->sessionManager->data['language'] - ) { - $response->header->l11n - ->loadFromLanguage( - $this->app->sessionManager->data['language'], - $this->app->sessionManager->data['country'] ?? '*' - ); - } else { - $this->app->setResponseLanguage($request, $response, $this->config); - } - - UriFactory::setQuery('/lang', $response->header->l11n->language); - - $this->loadLanguageFromPath( - $response->header->l11n->language, - __DIR__ . '/lang/' . $response->header->l11n->language . '.lang.php' - ); - - $response->header->set('content-language', $response->header->l11n->language, true); - - /* Create html head */ - $this->initResponseHead($head, $request, $response); - - /* Handle not logged in */ - if ($account->id < 1) { - $this->createLoggedOutResponse($response, $head, $pageView); - - return; - } - - /* No reading permission */ - if (!$account->hasPermission(PermissionType::READ, $this->app->unitId, $this->app->appId, 'Dashboard')) { - $this->create403Response($response, $pageView); - - return; - } - - $this->app->moduleManager->initRequestModules($request); - $this->createDefaultPageView($request, $response, $pageView); - - $dispatched = $this->app->dispatcher->dispatch( - $this->app->router->route( - $request->uri->getRoute(), - $request->getDataString('CSRF'), - $request->getRouteVerb(), - $this->app->appId, - $this->app->unitId, - $account, - $request->getData() - ), - $request, - $response - ); - $pageView->addData('dispatch', $dispatched); - } - - /** - * Get application organization - * - * @param HttpRequest $request Client request - * @param array $config App config - * - * @return int Organization id - * - * @since 1.0.0 - */ - private function getApplicationOrganization(HttpRequest $request, array $config) : int - { - return (int) ( - $request->getData('u') ?? ( - $config['domains'][$request->uri->host]['org'] ?? $this->app->appSettings->get( - SettingsEnum::DEFAULT_UNIT - ) ?? 1 - ) - ); - } - - /** - * Create 406 response. - * - * @param HttpResponse $response Response - * @param View $pageView View - * - * @return void - * - * @since 1.0.0 - */ - private function create406Response(HttpResponse $response, View $pageView) : void - { - $response->header->status = RequestStatusCode::R_406; - $pageView->setTemplate('/Web/Timerecording/Error/406'); - $this->loadLanguageFromPath( - $response->header->l11n->language, - __DIR__ . '/Error/lang/' . $response->header->l11n->language . '.lang.php' - ); - } - - /** - * Create 406 response. - * - * @param HttpResponse $response Response - * @param View $pageView View - * - * @return void - * - * @since 1.0.0 - */ - private function create503Response(HttpResponse $response, View $pageView) : void - { - $response->header->status = RequestStatusCode::R_503; - $pageView->setTemplate('/Web/Timerecording/Error/503'); - $this->loadLanguageFromPath( - $response->header->l11n->language, - __DIR__ . '/Error/lang/' . $response->header->l11n->language . '.lang.php' - ); - } - - /** - * Load theme language from path - * - * @param string $language Language name - * @param string $path Language path - * - * @return void - * - * @throws PathException - * - * @since 1.0.0 - */ - private function loadLanguageFromPath(string $language, string $path) : void - { - /* Load theme language */ - if (($absPath = \realpath($path)) === false) { - throw new PathException($path); - } - - /** @noinspection PhpIncludeInspection */ - $themeLanguage = include $absPath; - $this->app->l11nManager->loadLanguage($language, '0', $themeLanguage); - } - - /** - * Load permission - * - * @param HttpRequest $request Current request - * - * @return Account - * - * @since 1.0.0 - */ - private function loadAccount(HttpRequest $request) : Account - { - $account = AccountMapper::getWithPermissions($request->header->account); - $this->app->accountManager->add($account); - - return $account; - } - - /** - * Create 406 response. - * - * @param HttpResponse $response Response - * @param View $pageView View - * - * @return void - * - * @since 1.0.0 - */ - private function create403Response(HttpResponse $response, View $pageView) : void - { - $response->header->status = RequestStatusCode::R_403; - $pageView->setTemplate('/Web/Timerecording/Error/403'); - $this->loadLanguageFromPath( - $response->header->l11n->language, - __DIR__ . '/Error/lang/' . $response->header->l11n->language . '.lang.php' - ); - } - - /** - * Initialize response head - * - * @param Head $head Head to fill - * @param HttpRequest $request Request - * @param HttpResponse $response Response - * - * @return void - * - * @since 1.0.0 - */ - private function initResponseHead(Head $head, HttpRequest $request, HttpResponse $response) : void - { - /* Load assets */ - $head->addAsset(AssetType::CSS, 'Resources/fonts/googleicons/styles.css', ['defer']); - $head->addAsset(AssetType::CSS, 'cssOMS/styles.css?v=1.0.0', ['defer']); - $head->addAsset(AssetType::CSS, 'Web/{APPNAME}/css/frontend.css?v=1.0.0', ['defer']); - - // Framework - $head->addAsset(AssetType::JS, 'jsOMS/UnhandledException.js?v=1.0.0'); - $head->addAsset(AssetType::JS, 'Web/Timerecording/js/timerecording.js?v=1.0.0', ['type' => 'module']); - $head->addAsset(AssetType::JSLATE, 'Modules/Navigation/Controller.js?v=1.0.0', ['type' => 'module']); - - $script = ''; - $response->header->set( - 'content-security-policy', - 'base-uri \'self\'; script-src \'self\' blob: \'sha256-' - . \base64_encode(\hash('sha256', $script, true)) - . '\'; worker-src \'self\'', - true - ); - - if ($request->hasData('debug')) { - $head->addAsset(AssetType::CSS, 'cssOMS/debug.css?v=1.0.0'); - } - - $css = \file_get_contents(__DIR__ . '/css/timerecording-small.css'); - if ($css === false) { - $css = ''; - } - - $css = \preg_replace('!\s+!', ' ', $css); - $head->setStyle('core', $css ?? ''); - $head->title = 'Karaka Timerecording'; - } - - /** - * Create logged out response - * - * @param HttpResponse $response Response - * @param Head $head Head to fill - * @param View $pageView View - * - * @return void - * - * @since 1.0.0 - */ - private function createLoggedOutResponse(HttpResponse $response, Head $head, View $pageView) : void - { - $response->header->status = RequestStatusCode::R_403; - $pageView->setTemplate('/Web/Timerecording/login'); - $head->addAsset(AssetType::JS, 'Web/Timerecording/js/login.js', ['type' => 'module']); - } - - /** - * Create default page view - * - * @param HttpRequest $request Request - * @param HttpResponse $response Response - * @param TimerecordingView $pageView View - * - * @return void - * - * @since 1.0.0 - */ - private function createDefaultPageView(HttpRequest $request, HttpResponse $response, TimerecordingView $pageView) : void - { - $pageView->setOrganizations(UnitMapper::getAll()->execute()); - $pageView->profile = ProfileMapper::get()->where('account', $request->header->account)->executeGetArray(); - $pageView->setData('nav', $this->getNavigation($request, $response)); - - $pageView->setTemplate('/Web/Timerecording/index'); - } - - /** - * Create navigation - * - * @param HttpRequest $request Request - * @param HttpResponse $response Response - * - * @return View - * - * @since 1.0.0 - */ - private function getNavigation(HttpRequest $request, HttpResponse $response) : View - { - /** @var \Modules\Navigation\Controller\TimerecordingController $navController */ - $navController = $this->app->moduleManager->get('Navigation'); - $navController->loadLanguage($request, $response); - - return $navController->getView($request, $response); - } -} diff --git a/Admin/Install/Application/Timerecording/Error/403_inline.tpl.php b/Admin/Install/Application/Timerecording/Error/403_inline.tpl.php deleted file mode 100644 index e76b530..0000000 --- a/Admin/Install/Application/Timerecording/Error/403_inline.tpl.php +++ /dev/null @@ -1 +0,0 @@ -Inline \ No newline at end of file diff --git a/Admin/Install/Application/Timerecording/Routes.php b/Admin/Install/Application/Timerecording/Routes.php deleted file mode 100644 index f153041..0000000 --- a/Admin/Install/Application/Timerecording/Routes.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - 0 => [ - 'dest' => '\Modules\HumanResourceTimeRecording\Controller\TimerecordingController:viewDashboard', - 'verb' => 1, - 'active' => true, - 'permission' => [ - 'module' => 'HumanResourceTimeRecording', - 'type' => 2, - 'state' => 1, - ], - ], - ], - '^.*/timerecording/dashboard(\?.*$|$)' => [ - 0 => [ - 'dest' => '\Modules\HumanResourceTimeRecording\Controller\TimerecordingController:viewDashboard', - 'verb' => 1, - 'active' => true, - 'permission' => [ - 'module' => 'HumanResourceTimeRecording', - 'type' => 2, - 'state' => 1, - ], - ], - ], -]; diff --git a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording-small.css b/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording-small.css deleted file mode 100644 index 936e4f0..0000000 --- a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording-small.css +++ /dev/null @@ -1,190 +0,0 @@ -:root { - --main-bg: rgb(46, 26, 90); - --main-bg-hl: rgb(158, 81, 197); - --iborder: rgba(166, 135, 232, .4); - --iborder-active: rgba(166, 135, 232, .7); - --ipt-c: rgb(116, 67, 161); - --ipt-c-active: rgb(94, 52, 133); - --ipt-bg: rgba(255, 255, 255); - --ipt-bg-active: rgba(255, 255, 255); - --ipt-ico-c: rgba(166, 135, 232, .6); - --ipt-ico-c-active: rgba(166, 135, 232, 1); - --btn-main-bg: rgba(166, 135, 232, .6); - --btn-main-bg-active: rgba(166, 135, 232, .8); - --btn-main-c: rgba(255, 255, 255, .9); - --txt-on-bg-c: rgba(255, 255, 255, 0.7); - --txt-on-bg-c-2: rgba(255, 255, 255, 0.85); - --nav-cat-bg: rgb(43, 58, 101); - --nav-cat-bg-hl: rgb(113, 43, 145); - --nav-cat-bg-hover: rgb(120, 50, 153); - --nav-sub-bg: rgb(72, 39, 102); - --nav-sub-bg-hl: rgb(94, 52, 133); - --nav-sub-bg-hover: rgb(116, 67, 161); - --nav-head-bg: rgb(72, 39, 102); - --nav-head-bg-hl: rgb(94, 52, 133); - --nav-head-bg-hover: rgb(116, 67, 161); - --nav-content-hover: rgb(177, 97, 218); - --ff: 'Arial', Helvetica, sans-serif; - --btn-bg: rgb(158, 81, 197); - --btn-bg-hover: rgb(177, 97, 218); - --tcaption-bg: rgb(255, 255, 255); - --thead-bg: rgb(236, 232, 255); - --trow-bg: rgb(255, 255, 255); - --trow-bg-alt: rgb(255, 255, 255); - --trow-bg-hover: rgb(220, 211, 255); - --link-c: rgb(72, 39, 102); - --lhover: rgb(158, 81, 197); - --badge-size: .55rem; - --badge-c: rgb(255, 255, 255); - --badge-bg: rgb(158, 81, 197); - --bborder: rgb(218, 218, 218); } - - html, body { - width: 100%; - height: 100%; - min-width: 100%; - max-width: 100%; - overflow: hidden; - font-family: var(--ff); - color: #000; } - - body { - display: flex; flex-direction: column;} - -header { - background: #f8f8f8; - border-bottom: 1px solid var(--bborder); - padding: 1rem; - box-sizing: border-box; - display: flex; - align-items: center; - flex-flow: row; - flex: 0; } - header > form { - display: flex; - flex: 1; - padding: 0 5px 0 5px; - max-width: 800px; } - header .inputWrapper { - flex: 1; } - header input[type=text] { - width: 100%; - background: white; - border: 1px solid var(--iborder); - text-shadow: none; - box-shadow: none; - transition: border 500ms ease-out; - outline: none; - box-sizing: border-box; - padding-left: 2rem; } - - #logo { - flex: 1; - text-align: right; } - #logo select { - background: none; - color: rgba(255, 255, 255, 0.8); - font-size: .8rem; } - - .ham-trigger { - display: flex; - color: #000; - align-items: center; - flex: 0; - margin-right: 5px; } - .ham-trigger i { - font-size: 1.5rem; } - - nav .ham-trigger { - color: var(--txt-on-bg-c-2); - margin: 0 0 0 5px; - display: none; } - - #t-nav-container { - margin-left: auto; } - - #content { - flex: 1; - padding-left: 1rem; - overflow-y: auto; } - - #t-nav { - font-size: .8rem; - color: #000; - font-weight: bold; } - #t-nav a { - padding: 0 5px 0 5px; - line-height: 25px; } - #t-nav i { - margin-right: 5px; } - #t-nav li { - display: inline; } - #t-nav li:hover { - color: var(--lhover); } - - main { - display: flex; - flex-direction: column; - height: 100%; - background: #f1f1f1; - flex: 1; - box-sizing: border-box; } - - #dim { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: #000; - opacity: 0.5; - z-index: 5; } - - #u-box { - display: flex; - align-items: center; - padding: 0 1rem 0 1rem; - height: 60px; - border-bottom: 1px solid var(--iborder); - box-sizing: border-box; } - #u-box img { - width: 40px; - height: 40px; - border-radius: 50%; } - #u-box a { - display: inline-block; } - - #app-message-container { - position: absolute; - margin: 0 auto; - right: 0; - top: 0; - padding: 85px 10px 0 0; - } - - .log-msg { - z-index: 11; - position: relative; - margin: 0 auto; - right: 0; - top: 0; - margin-bottom: 10px; - } - - @media only screen and (max-width: 500px) { - nav .ham-trigger { - display: flex; } } - @media only screen and (max-width: 600px) { -header { - flex-flow: column; - height: auto; - padding: 1rem; } - header form { - width: 100%; } - - #t-nav-container { - order: -1; - margin-bottom: .5rem; } } - @media only screen and (max-width: 1000px) { - #t-nav .link { - display: none; } } diff --git a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording-small.scss b/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording-small.scss deleted file mode 100644 index 71234a9..0000000 --- a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording-small.scss +++ /dev/null @@ -1,153 +0,0 @@ -@import "backend_vars"; - -html, body { - width: 100%; - height: 100%; - min-width: 100%; - max-width: 100%; - overflow: hidden; - font-family: var(--ff); - color: #000; -} - -body { - display: flex; - flex-direction: column; -} - -header { - background: rgb(248, 248, 248); - border-bottom: 1px solid var(--bborder); - padding: 1rem; - box-sizing: border-box; - display: flex; - align-items: center; - flex-flow: row; - flex: 0; - - > form { - display: flex; - flex: 1; - padding: 0 5px 0 5px; - max-width: 800px; - } - - .inputWrapper { - flex: 1; - } - - input[type=text] { - width: 100%; - background: rgba(255, 255, 255, 1); - border: 1px solid var(--iborder); - text-shadow: none; - box-shadow: none; - transition : border 500ms ease-out; - outline: none; - box-sizing: border-box; - padding-left: 2rem; - } -} - -#logo { - flex: 1; - text-align: right; - - select { - background: none; - color: rgba(255, 255, 255, 0.8); - font-size: .8rem; - } -} - -#t-nav-container { - margin-left: auto; -} - -#content { - flex: 1; - padding-left: 1rem; - overflow-y: auto; -} - -#t-nav { - font-size: .8rem; - color: #000; - font-weight: bold; - - a { - padding: 0 5px 0 5px; - line-height: 25px; - } - - i { - margin-right: 5px; - } - - li { - display: inline; - - &:hover { - color: var(--lhover); - } - } -} - -main { - display: flex; - flex-direction: column; - height: 100%; - background: #f1f1f1; - - flex: 1; - box-sizing: border-box; -} - -#dim { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: #000; - opacity: 0.5; - z-index: 5; -} - -#u-box { - display: flex; - align-items: center; - padding: 0 1rem 0 1rem; - height: 60px; - border-bottom: 1px solid var(--iborder); - box-sizing: border-box; - - img { - width: 40px; - height: 40px; - border-radius: 50%; - } - - a { - display: inline-block; - } -} - -#app-message-container { - position: absolute; - margin: 0 auto; - right: 0; - top: 0; - padding: 85px 10px 0 0; - - .log-msg { - z-index: 11; - position: relative; - margin: 0 auto; - right: 0; - top: 0; - margin-bottom: 10px; - } -} - -@import "timerecording_media"; \ No newline at end of file diff --git a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_media.css b/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_media.css deleted file mode 100644 index cc491bf..0000000 --- a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_media.css +++ /dev/null @@ -1,39 +0,0 @@ -@media only screen and (min-width: 1101px) { - .b-1 { - width: 31.5%; - width: calc(33.3% - 10px); } - - .b-2 { - width: 48.5%; - width: calc(50% - 10px); } - - .b-3 { - width: 63%; - width: calc(66.6% - 10px); } } -@media only screen and (min-width: 801px) and (max-width: 1100px) { - .b-1 { - width: 48.5%; - width: calc(50% - 10px); } } -@media only screen and (max-width: 1100px) { - .b-2, .b-3 { - width: 100%; - width: calc(100% - 10px); } } -@media only screen and (min-width: 801px) { - .b-4 { - width: 48.5%; - width: calc(50% - 10px); } } -@media only screen and (max-width: 800px) { - .b-1, .b-3 { - width: 100%; - width: calc(100% - 10px); } - - #logo { - display: none; } - - #s-nav { - width: 100%; } - - #s-bar input[type=text] { - margin-left: 35px; - width: 80%; - width: calc(100% - 90px); } } diff --git a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_media.scss b/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_media.scss deleted file mode 100644 index 089e346..0000000 --- a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_media.scss +++ /dev/null @@ -1,22 +0,0 @@ -@media only screen and (max-width: 600px) { - header { - flex-flow: column; - height: auto; - padding: 1rem; - - form { - width: 100%; - } - } - - nav { - order: -1; - margin-bottom: .5rem; - } -} - -@media only screen and (max-width: 1000px) { - nav .link { - display: none; - } -} \ No newline at end of file diff --git a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_vars.css b/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_vars.css deleted file mode 100644 index 8e69fe6..0000000 --- a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_vars.css +++ /dev/null @@ -1,24 +0,0 @@ -:root { - --main-bg: rgb(46, 26, 90); - --main-bg-hl: rgb(158, 81, 197); - --iborder: rgba(166, 135, 232, .4); - --iborder-active: rgba(166, 135, 232, .7); - --ipt-c: rgba(166, 135, 232, .6); - --ipt-c-active: rgba(166, 135, 232, .8); - --ipt-ico-c: rgba(166, 135, 232, .6); - --ipt-ico-c-active: rgba(166, 135, 232, 1); - --btn-main-bg: rgba(166, 135, 232, .6); - --btn-main-bg-active: rgba(166, 135, 232, .8); - --btn-main-c: rgba(255, 255, 255, .9); - --txt-on-bg-c: rgba(255, 255, 255, 0.7); - --nav-cat-bg: rgb(43, 58, 101); - --nav-cat-bg-hl: rgb(113, 43, 145); - --nav-cat-bg-hover: rgb(120, 50, 153); - --nav-sub-bg: rgb(72, 39, 102); - --nav-sub-bg-hl: rgb(94, 52, 133); - --nav-sub-bg-hover: rgb(116, 67, 161); - --nav-head-bg: rgb(72, 39, 102); - --nav-head-bg-hl: rgb(94, 52, 133); - --nav-head-bg-hover: rgb(116, 67, 161); - --ff: 'Arial', Helvetica, sans-serif; - --bborder-color: rgb(202, 202, 202); } diff --git a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_vars.scss b/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_vars.scss deleted file mode 100644 index 8e28c26..0000000 --- a/Admin/Install/Application/Timerecording/Themes/Akebi/css/timerecording_vars.scss +++ /dev/null @@ -1,55 +0,0 @@ -:root { - --main-bg: rgb(46, 26, 90); - --main-bg-hl: rgb(158, 81, 197); - - --iborder: rgba(166, 135, 232, .4); - --iborder-active: rgba(166, 135, 232, .7); - --ipt-c: rgb(116, 67, 161); - --ipt-c-active: rgb(94, 52, 133); - --ipt-bg: rgba(255, 255, 255); - --ipt-bg-active: rgba(255, 255, 255); - - --ipt-ico-c: rgba(166, 135, 232, .6); - --ipt-ico-c-active: rgba(166, 135, 232, 1); - - --btn-main-bg: rgba(166, 135, 232, .6); - --btn-main-bg-active: rgba(166, 135, 232, .8); - --btn-main-c: rgba(255, 255, 255, .9); - - --txt-on-bg-c: rgba(255, 255, 255, 0.7); - --txt-on-bg-c-2: rgba(255, 255, 255, 0.85); - - --nav-cat-bg: rgb(43, 58, 101); - --nav-cat-bg-hl: rgb(113, 43, 145); - --nav-cat-bg-hover: rgb(120, 50, 153); - - --nav-sub-bg: rgb(72, 39, 102); - --nav-sub-bg-hl: rgb(94, 52, 133); - --nav-sub-bg-hover: rgb(116, 67, 161); - - --nav-head-bg: rgb(72, 39, 102); - --nav-head-bg-hl: rgb(94, 52, 133); - --nav-head-bg-hover: rgb(116, 67, 161); - - --nav-content-hover: rgb(177, 97, 218); - - --ff: 'Arial', Helvetica, sans-serif; - - --btn-bg: rgb(158, 81, 197); - --btn-bg-hover: rgb(177, 97, 218); - - --tcaption-bg: rgb(255, 255, 255); - --thead-bg: rgb(236, 232, 255); - --trow-bg: rgb(255, 255, 255); - --trow-bg-alt: rgb(255, 255, 255); - --trow-bg-hover: rgb(220, 211, 255); - - --link-c: rgb(72, 39, 102); - --lhover: rgb(158, 81, 197); - - --badge-size: .55rem; - --badge-c: rgb(255, 255, 255); - --badge-bg: rgb(158, 81, 197); - - --bborder: rgb(218, 218, 218); -} diff --git a/Admin/Install/Application/Timerecording/TimerecordingView.php b/Admin/Install/Application/Timerecording/TimerecordingView.php deleted file mode 100644 index 144f791..0000000 --- a/Admin/Install/Application/Timerecording/TimerecordingView.php +++ /dev/null @@ -1,102 +0,0 @@ -nav = $nav; - } - - /** - * Get profile image - * - * @return string Profile image link - * - * @since 1.0.0 - */ - public function getProfileImage() : string - { - if ($this->profile === null || $this->profile->image->getPath() === '') { - return UriFactory::build('Web/Timerecording/img/user_default_' . \mt_rand(1, 6) . '.png'); - } - - return UriFactory::build($this->profile->image->getPath()); - } - - /** - * Set organizations - * - * @param Unit[] $organizations Organizations - * - * @return void - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function setOrganizations(array $organizations) : void - { - $this->organizations = $organizations; - } -} diff --git a/Admin/Install/Application/Timerecording/img/favicon.ico b/Admin/Install/Application/Timerecording/img/favicon.ico deleted file mode 100644 index ec514e2..0000000 Binary files a/Admin/Install/Application/Timerecording/img/favicon.ico and /dev/null differ diff --git a/Admin/Install/Application/Timerecording/img/logo.png b/Admin/Install/Application/Timerecording/img/logo.png deleted file mode 100644 index 5a15832..0000000 Binary files a/Admin/Install/Application/Timerecording/img/logo.png and /dev/null differ diff --git a/Admin/Install/Application/Timerecording/index.tpl.php b/Admin/Install/Application/Timerecording/index.tpl.php deleted file mode 100644 index 5f172db..0000000 --- a/Admin/Install/Application/Timerecording/index.tpl.php +++ /dev/null @@ -1,69 +0,0 @@ -getData('nav'); - -$nav->setTemplate('/Modules/Navigation/Theme/Backend/top'); -$top = $nav->render(); - -/** @var phpOMS\Model\Html\Head $head */ -$head = $this->head; - -/** @var array $dispatch */ -$dispatch = $this->getData('dispatch') ?? []; -?> - - -
- - - - - - - = $head->meta->render(); ?> - -
-