mirror of
https://github.com/Karaka-Management/oms-OnlineResourceWatcher.git
synced 2026-02-09 12:58:41 +00:00
update structure
This commit is contained in:
parent
d1ecaa138b
commit
e04f1c06c2
3
.gitmodules
vendored
3
.gitmodules
vendored
|
|
@ -4,3 +4,6 @@
|
|||
[submodule "app/web/phpOMS"]
|
||||
path = app/web/phpOMS
|
||||
url = https://github.com/Karaka-Management/phpOMS.git
|
||||
[submodule "app/web/Resources"]
|
||||
path = app/web/Resources
|
||||
url = https://github.com/Karaka-Management/Resources.git
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,2 +0,0 @@
|
|||
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.33.31629:TargetPlatformVersion=10.0.19041.0:
|
||||
Debug|x64|C:\Users\deich\git\OnlineResourceWatcherApp\app\server\|
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,3 +0,0 @@
|
|||
c:\users\deich\git\onlineresourcewatcherapp\app\server\x64\debug\vc143.idb
|
||||
c:\users\deich\git\onlineresourcewatcherapp\app\server\x64\debug\vc143.pdb
|
||||
c:\users\deich\git\onlineresourcewatcherapp\app\server\x64\debug\onlinere.e4833a04.tlog\cl.command.1.tlog
|
||||
Binary file not shown.
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<ProjectOutputs>
|
||||
<ProjectOutput>
|
||||
<FullPath>C:\Users\deich\git\OnlineResourceWatcherApp\app\server\x64\Debug\OnlineResourceWatcherServerApp.exe</FullPath>
|
||||
</ProjectOutput>
|
||||
</ProjectOutputs>
|
||||
<ContentFiles />
|
||||
<SatelliteDlls />
|
||||
<NonRecipeFileRefs />
|
||||
</Project>
|
||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
|||
OnlineResourceWatcherServerApp.vcxproj -> C:\Users\deich\git\OnlineResourceWatcherApp\app\server\x64\Debug\OnlineResourceWatcherServerApp.exe
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
|||
C:\Users\deich\git\OnlineResourceWatcherApp\app\server\x64\Debug\OnlineResourceWatcherServerApp.exe
|
||||
|
|
@ -1 +0,0 @@
|
|||
x64\Debug\\_IsIncrementalBuild
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
10
app/web/Application.php
Normal file
10
app/web/Application.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
class Application
|
||||
{
|
||||
public function run() : string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Controllers;
|
||||
|
||||
class ApiController
|
||||
{
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Controllers;
|
||||
|
||||
class FrontController
|
||||
{
|
||||
}
|
||||
12
app/web/Install/Installer.php
Normal file
12
app/web/Install/Installer.php
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Install;
|
||||
|
||||
class Install
|
||||
{
|
||||
private function installDB()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
513
app/web/Install/db.json
Normal file
513
app/web/Install/db.json
Normal file
|
|
@ -0,0 +1,513 @@
|
|||
{
|
||||
"country": {
|
||||
"name": "country",
|
||||
"fields": {
|
||||
"country_id": {
|
||||
"name": "country_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"country_name": {
|
||||
"name": "country_name",
|
||||
"type": "VARCHAR(100)",
|
||||
"null": false
|
||||
},
|
||||
"country_code2": {
|
||||
"name": "country_code2",
|
||||
"type": "VARCHAR(2)",
|
||||
"null": false,
|
||||
"unique": true
|
||||
},
|
||||
"country_code3": {
|
||||
"name": "country_code3",
|
||||
"type": "VARCHAR(3)",
|
||||
"null": false
|
||||
},
|
||||
"country_numeric": {
|
||||
"name": "country_numeric",
|
||||
"type": "INT(11)",
|
||||
"null": false
|
||||
},
|
||||
"country_region": {
|
||||
"name": "country_region",
|
||||
"type": "VARCHAR(15)",
|
||||
"null": true
|
||||
},
|
||||
"country_developed": {
|
||||
"name": "country_developed",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"address": {
|
||||
"name": "address",
|
||||
"fields": {
|
||||
"address_id": {
|
||||
"name": "address_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"address_name": {
|
||||
"name": "address_name",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"address_addition": {
|
||||
"name": "address_addition",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"address_address": {
|
||||
"name": "address_address",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"address_postal": {
|
||||
"name": "address_postal",
|
||||
"type": "VARCHAR(30)",
|
||||
"null": false
|
||||
},
|
||||
"address_state": {
|
||||
"name": "address_state",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"address_city": {
|
||||
"name": "address_city",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"address_country": {
|
||||
"name": "address_country",
|
||||
"type": "VARCHAR(2)",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "country",
|
||||
"foreignKey": "country_code2"
|
||||
},
|
||||
"address_type": {
|
||||
"name": "address_type",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"org": {
|
||||
"name": "org",
|
||||
"fields": {
|
||||
"org_id": {
|
||||
"name": "org_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"org_status": {
|
||||
"name": "org_status",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"org_name1": {
|
||||
"name": "org_name1",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false,
|
||||
"annotations": {
|
||||
"gdpr": true
|
||||
}
|
||||
},
|
||||
"org_name2": {
|
||||
"name": "org_name2",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false,
|
||||
"annotations": {
|
||||
"gdpr": true
|
||||
}
|
||||
},
|
||||
"org_name3": {
|
||||
"name": "org_name3",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false,
|
||||
"annotations": {
|
||||
"gdpr": true
|
||||
}
|
||||
},
|
||||
"org_filesize_limit": {
|
||||
"name": "org_filesize_limit",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"org_resource_limit": {
|
||||
"name": "org_resource_limit",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"org_resource_pricing": {
|
||||
"name": "org_resource_pricing",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"org_created_at": {
|
||||
"name": "org_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"org_addressrel": {
|
||||
"name": "org_addressrel",
|
||||
"fields": {
|
||||
"org_addressrel_id": {
|
||||
"name": "org_addressrel_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"org_addressrel_org": {
|
||||
"name": "org_addressrel_org",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "org",
|
||||
"foreignKey": "org_id"
|
||||
},
|
||||
"org_addressrel_address": {
|
||||
"name": "org_addressrel_address",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "address",
|
||||
"foreignKey": "address_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"name": "account",
|
||||
"fields": {
|
||||
"account_id": {
|
||||
"name": "account_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"account_status": {
|
||||
"name": "account_status",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"account_login": {
|
||||
"name": "account_login",
|
||||
"type": "VARCHAR(50)",
|
||||
"default": null,
|
||||
"null": true,
|
||||
"unique": true
|
||||
},
|
||||
"account_password": {
|
||||
"name": "account_password",
|
||||
"type": "VARCHAR(64)",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"account_reset_hash": {
|
||||
"name": "account_reset_hash",
|
||||
"type": "VARCHAR(64)",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"account_email": {
|
||||
"name": "account_email",
|
||||
"type": "VARCHAR(70)",
|
||||
"null": false,
|
||||
"annotations": {
|
||||
"gdpr": true
|
||||
}
|
||||
},
|
||||
"account_tries": {
|
||||
"name": "account_tries",
|
||||
"type": "TINYINT",
|
||||
"null": false,
|
||||
"default": 0
|
||||
},
|
||||
"account_lang": {
|
||||
"name": "account_lang",
|
||||
"type": "VARCHAR(2)",
|
||||
"null": false
|
||||
},
|
||||
"account_org": {
|
||||
"name": "account_org",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "org",
|
||||
"foreignKey": "org_id"
|
||||
},
|
||||
"account_created_at": {
|
||||
"name": "account_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"org_bill": {
|
||||
"name": "org_bill",
|
||||
"fields": {
|
||||
"org_bill_id": {
|
||||
"name": "org_bill_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"org_bill_path": {
|
||||
"name": "org_bill_path",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"org_bill_org": {
|
||||
"name": "org_bill_org",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "org",
|
||||
"foreignKey": "org_id"
|
||||
},
|
||||
"org_bill_created_at": {
|
||||
"name": "org_bill_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"resource": {
|
||||
"name": "resource",
|
||||
"fields": {
|
||||
"resource_id": {
|
||||
"name": "resource_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"resource_status": {
|
||||
"name": "resource_status",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"resource_uri": {
|
||||
"name": "resource_uri",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"resource_hash": {
|
||||
"name": "resource_hash",
|
||||
"type": "BLOB(64)",
|
||||
"null": false
|
||||
},
|
||||
"resource_last_version_path": {
|
||||
"name": "resource_last_version_path",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"resource_last_version_date": {
|
||||
"name": "resource_last_version_date",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
},
|
||||
"resource_checked_at": {
|
||||
"name": "resource_checked_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
},
|
||||
"resource_org": {
|
||||
"name": "resource_org",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "org",
|
||||
"foreignKey": "org_id"
|
||||
},
|
||||
"resource_created_at": {
|
||||
"name": "resource_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"resource_check": {
|
||||
"name": "resource_check",
|
||||
"fields": {
|
||||
"resource_check_id": {
|
||||
"name": "resource_check_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"resource_check_status": {
|
||||
"name": "resource_check_status",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"resource_check_change": {
|
||||
"name": "resource_check_change",
|
||||
"type": "TEXT",
|
||||
"null": false
|
||||
},
|
||||
"resource_check_created_at": {
|
||||
"name": "resource_check_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
},
|
||||
"resource_check_resource": {
|
||||
"name": "resource_check_resource",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "resource",
|
||||
"foreignKey": "resource_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"resource_info": {
|
||||
"name": "resource_info",
|
||||
"fields": {
|
||||
"resource_info_id": {
|
||||
"name": "resource_info_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"resource_info_mail": {
|
||||
"name": "resource_info_mail",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"annotations": {
|
||||
"gdpr": true
|
||||
}
|
||||
},
|
||||
"resource_info_account": {
|
||||
"name": "resource_info_account",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"resource_info_resource": {
|
||||
"name": "resource_info_resource",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "resource",
|
||||
"foreignKey": "resource_id"
|
||||
},
|
||||
"resource_check_created_at": {
|
||||
"name": "resource_check_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"resource_blacklist": {
|
||||
"name": "resource_blacklist",
|
||||
"fields": {
|
||||
"resource_blacklist_id": {
|
||||
"name": "resource_blacklist_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"resource_blacklist_mail": {
|
||||
"name": "resource_blacklist_mail",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"annotations": {
|
||||
"gdpr": true
|
||||
}
|
||||
},
|
||||
"resource_blacklist_created_at": {
|
||||
"name": "resource_blacklist_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"auditor_audit": {
|
||||
"name": "auditor_audit",
|
||||
"fields": {
|
||||
"auditor_audit_id": {
|
||||
"name": "auditor_audit_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"auditor_audit_module": {
|
||||
"name": "auditor_audit_module",
|
||||
"type": "VARCHAR(255)",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"auditor_audit_ref": {
|
||||
"name": "auditor_audit_ref",
|
||||
"type": "VARCHAR(255)",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"auditor_audit_type": {
|
||||
"name": "auditor_audit_type",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"auditor_audit_trigger": {
|
||||
"name": "auditor_audit_trigger",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"auditor_audit_content": {
|
||||
"name": "auditor_audit_content",
|
||||
"type": "TEXT",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"auditor_audit_old": {
|
||||
"name": "auditor_audit_old",
|
||||
"type": "BLOB",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"auditor_audit_new": {
|
||||
"name": "auditor_audit_new",
|
||||
"type": "BLOB",
|
||||
"default": null,
|
||||
"null": true
|
||||
},
|
||||
"auditor_audit_created_at": {
|
||||
"name": "auditor_audit_created_at",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
},
|
||||
"auditor_audit_created_by": {
|
||||
"name": "auditor_audit_created_by",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"auditor_audit_ip": {
|
||||
"name": "auditor_audit_ip",
|
||||
"type": "BIGINT(20)",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
\ob_start();
|
||||
|
||||
require_once __DIR__ . '/../phpOMS/Autoloader.php';
|
||||
|
||||
$App = new \Application();
|
||||
echo $App->run();
|
||||
|
||||
if (\ob_get_level() > 0) {
|
||||
\ob_end_flush();
|
||||
}
|
||||
407
app/web/Install/index.tpl.php
Normal file
407
app/web/Install/index.tpl.php
Normal file
|
|
@ -0,0 +1,407 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Template
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link https://karaka.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
/** @var \phpOMS\Views\View $this View */?><!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" type="text/css" href="styles.css">
|
||||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
|
||||
<script src="../jsOMS/Utils/oLib.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<div id="page-1" class="page">
|
||||
<section>
|
||||
<img alt="Logo" src="img/logo.png" class="logo" width="50">
|
||||
<h1>Welcome</h1>
|
||||
<div>
|
||||
<p>Karaka is a WebApp written in PHP and JavaScript supporting various database
|
||||
and caching technologies. Many modules/extensions provide functionality for businesses,
|
||||
education facilities, healthcare facilities and organizations in general.<p>
|
||||
|
||||
<p>In the following pages you'll be guided through the installation process for the WebApp.
|
||||
Most of the customization can be done after installation such as configuring localization,
|
||||
installing additional modules, creating organization etc.</p>
|
||||
|
||||
<p>In case you don't want to use this web installation tool you can also use the console
|
||||
installation tool. Just navigate in your shell to the install directory and then into
|
||||
Console the subdirectory. There you simply run the install script and are good to go.</p>
|
||||
|
||||
<p>In case you encounter any problems during the installation process please feel free to
|
||||
ask for help on our website or contact our support email at
|
||||
<strong>test.email@karaka.de</strong></p>
|
||||
|
||||
<p><button class="next">Next</button></p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div id="page-2" class="page">
|
||||
<section>
|
||||
<img alt="Logo" src="img/logo.png" class="logo" width="50">
|
||||
<h1>License & User Agreement</h1>
|
||||
<div>
|
||||
<p>Upon clicking Agree you agree with the following license agreement.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The OMS License 1.0</p>
|
||||
|
||||
<p>Copyright (c) <Dennis Eichhorn> All Rights Reserved</p>
|
||||
|
||||
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.</p>
|
||||
</blockquote>
|
||||
|
||||
<p><button class="prev">Previous</button><button class="next">Agree</button></p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div id="page-3" class="page">
|
||||
<section>
|
||||
<img alt="Logo" src="img/logo.png" class="logo" width="50">
|
||||
<h1>Pre-installation check</h1>
|
||||
<div>
|
||||
<p>The following checks show if your environment supports the necessary requirements of the WebApp.</p>
|
||||
|
||||
<p>Right next to the check status you can see the type of the requirement. Anything crictial will
|
||||
prevent you from installing the WebApp and must be fixed. Medium indicates that some important features
|
||||
are not available but the WebApp can be still installed. Optional means that only minor features are not
|
||||
available.</p>
|
||||
|
||||
<p>All non critical elements can be fixed after installation if you find yourself in need of one of the
|
||||
features. All critical elements must be fixed before you can continue with the installation.</p>
|
||||
|
||||
<p>For help please check our <a href="https://karaka.app">Installation Guide</a>.</p>
|
||||
<?php $isOK = \version_compare('8.0.0', \PHP_VERSION) < 1 && \extension_loaded('pdo'); ?>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Status
|
||||
<th>Type
|
||||
<th>Requirement
|
||||
<th>Your Environment
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="<?= \version_compare('8.0.0', \PHP_VERSION) < 1 ? 'OK' : 'FAILED'; ?>"><?= \version_compare('8.0.0', \PHP_VERSION) < 1 ? 'OK' : 'FAILED'; ?>
|
||||
<td>Critcal
|
||||
<td>PHP version >= 8.0.0
|
||||
<td><?= \PHP_VERSION; ?>
|
||||
<tr>
|
||||
<td class="<?= ($filePerm = \is_writable(__DIR__ . '/../Install')
|
||||
&& \is_writable(__DIR__ . '/../Modules')
|
||||
&& \is_writable(__DIR__ . '/../Modules/Media/Files')
|
||||
&& \is_writable(__DIR__ . '/../Web')
|
||||
&& \is_writable(__DIR__ . '/../Console')) ? 'OK' : 'FAILED'; ?>">
|
||||
<?= $filePerm ? 'OK' : 'FAILED'; ?>
|
||||
<td>Critcal
|
||||
<td><strong>File permissions <?php if ($filePerm) : ?><?php else : ?>(<span class="FAILED">write permissions required!</span>)<?php endif; ?></strong>
|
||||
<td>
|
||||
<tr>
|
||||
<td>
|
||||
<td>Critcal
|
||||
<td>/Install
|
||||
<td class="<?= \is_writable(__DIR__ . '/../Install') ? 'OK' : 'FAILED'; ?>"><?= \decoct(\fileperms(__DIR__ . '/../Install') & 0777); ?>
|
||||
<tr>
|
||||
<td>
|
||||
<td>Critcal
|
||||
<td>/Modules
|
||||
<td class="<?= \is_writable(__DIR__ . '/../Modules') ? 'OK' : 'FAILED'; ?>"><?= \decoct(\fileperms(__DIR__ . '/../Modules') & 0777); ?>
|
||||
<tr>
|
||||
<td>
|
||||
<td>Critcal
|
||||
<td>/Modules
|
||||
<td class="<?= \is_writable(__DIR__ . '/../Modules/Media/Files') ? 'OK' : 'FAILED'; ?>"><?= \decoct(\fileperms(__DIR__ . '/../Modules/Media/Files') & 0777); ?>
|
||||
<tr>
|
||||
<td>
|
||||
<td>Critcal
|
||||
<td>/Web
|
||||
<td class="<?= \is_writable(__DIR__ . '/../Web') ? 'OK' : 'FAILED'; ?>"><?= \decoct(\fileperms(__DIR__ . '/../Web') & 0777); ?>
|
||||
<tr>
|
||||
<td>
|
||||
<td>Critcal
|
||||
<td>/Console
|
||||
<td class="<?= \is_writable(__DIR__ . '/../Console') ? 'OK' : 'FAILED'; ?>"><?= \decoct(\fileperms(__DIR__ . '/../Console') & 0777); ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('pdo') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('pdo') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Critcal
|
||||
<td>PDO database extension for PHP
|
||||
<td><?= \extension_loaded('pdo') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('imap') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('imap') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Medium
|
||||
<td>IMAP extension for PHP
|
||||
<td><?= \extension_loaded('imap') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('curl') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('curl') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Medium
|
||||
<td>cUrl extension for PHP
|
||||
<td><?= \extension_loaded('curl') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('ftp') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('ftp') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Medium
|
||||
<td>FTP extension for PHP
|
||||
<td><?= \extension_loaded('ftp') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('dom') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('dom') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Medium
|
||||
<td>Dom extension for PHP
|
||||
<td><?= \extension_loaded('dom') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('xml') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('xml') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Medium
|
||||
<td>Xml extension for PHP
|
||||
<td><?= \extension_loaded('xml') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('bcmath') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('bcmath') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Medium
|
||||
<td>BCMath extension for PHP
|
||||
<td><?= \extension_loaded('bcmath') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('mbstring') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('mbstring') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Optional
|
||||
<td>Multibyte extension (mbstring) for PHP for international characters (e.g. chinese, russian)
|
||||
<td><?= \extension_loaded('mbstring') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('zip') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('zip') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Optional
|
||||
<td>Zip extension for PHP
|
||||
<td><?= \extension_loaded('zip') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('zlib') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('zlib') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Optional
|
||||
<td>Zlib extension for PHP
|
||||
<td><?= \extension_loaded('zlib') ? 'Available' : 'Not installed'; ?>
|
||||
<tr>
|
||||
<td class="<?= \extension_loaded('gd') ? 'OK' : 'FAILED'; ?>"><?= \extension_loaded('gd') ? 'OK' : 'FAILED'; ?>
|
||||
<td>Optional
|
||||
<td>Gd extension for PHP
|
||||
<td><?= \extension_loaded('gd') ? 'Available' : 'Not installed'; ?>
|
||||
</table>
|
||||
|
||||
<p><strong>Tip:</strong> Many PHP extension just need to be activated in your php.ini file located
|
||||
at <?= \php_ini_loaded_file(); ?>. Reload the installation in your browser after making any adjustments.</p>
|
||||
|
||||
<p><button class="prev">Previous</button><button class="next"<?= !$isOK ? ' disabled' : '';?>>Next</button></p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div id="page-4" class="page">
|
||||
<section>
|
||||
<img alt="Logo" src="img/logo.png" class="logo" width="50">
|
||||
<h1>Database</h1>
|
||||
<div>
|
||||
<p>Please create a database this WebApp can use and configure every field.</p>
|
||||
|
||||
<form id="installForm" name="installForm" method="put" action="<?= $this->request->uri->__toString(); ?>">
|
||||
<ul>
|
||||
<li><label for="iDbHost">Address</label>
|
||||
<li><input id="iDbHost" name="dbhost" type="text" value="127.0.0.1" required>
|
||||
<li><label for="iDbType">Type</label>
|
||||
<li><select id="iDbType" name="dbtype">
|
||||
<option value="mysql" selected>MySQL
|
||||
<option value="postgresql">PostgreSQL
|
||||
<option value="mssql">MSSQL
|
||||
</select>
|
||||
<li><label for="iDbPort">Port</label>
|
||||
<li><input id="iDbPort" name="dbport" type="number" value="3306" required>
|
||||
<li><label for="iDbName">Database</label>
|
||||
<li><strong class="FAILED">Please make sure that you have created this database. Please also make sure that this database is empty!</strong>
|
||||
<li><input id="iDbName" name="dbname" type="text" value="oms" required>
|
||||
</ul>
|
||||
</form>
|
||||
|
||||
<h2>Users</h2>
|
||||
|
||||
<p>This WebApp uses different database users for different tasks. This way permissions can be
|
||||
managed in a batter way which also helps to improve the security. You can use always the same
|
||||
user and give that user the necessary permissions, this however is not advised. Please make
|
||||
sure every user only has the necessary permissions assigned.</p>
|
||||
|
||||
<h3>Schema</h3>
|
||||
|
||||
<p>The schema user is responsible for modifying the database structure and is only used during
|
||||
the installation and potentially during updates if the database needs to be modified.</p>
|
||||
|
||||
<ul>
|
||||
<li><label for="iSchemaUser">User</label>
|
||||
<li><input id="iSchemaUser" name="schemauser" type="text" form="installForm" required>
|
||||
<li><label for="iSchemaPassword">Password</label>
|
||||
<li><input id="iSchemaPassword" name="schemapassword" type="password" form="installForm">
|
||||
</ul>
|
||||
|
||||
<h3>Create</h3>
|
||||
|
||||
<p>The create user is only used by the API for creating new database entries.</p>
|
||||
|
||||
<ul>
|
||||
<li><label for="iCreateUser">User</label>
|
||||
<li><input id="iCreateUser" name="createuser" type="text" form="installForm" required>
|
||||
<li><label for="iCreatePassword">Password</label>
|
||||
<li><input id="iCreatePassword" name="createpassword" type="password" form="installForm">
|
||||
</ul>
|
||||
|
||||
<h3>Select</h3>
|
||||
|
||||
<p>The select user is used by every part of the WebApp to read database entries.</p>
|
||||
|
||||
<ul>
|
||||
<li><label for="iSelectUser">User</label>
|
||||
<li><input id="iSelectUser" name="selectuser" type="text" form="installForm" required>
|
||||
<li><label for="iSelectPassword">Password</label>
|
||||
<li><input id="iSelectPassword" name="selectpassword" type="password" form="installForm">
|
||||
</ul>
|
||||
|
||||
<h3>Update</h3>
|
||||
|
||||
<p>The update user is only used by the API for updating existing database entries.</p>
|
||||
|
||||
<ul>
|
||||
<li><label for="iUpdateUser">User</label>
|
||||
<li><input id="iUpdateUser" name="updateuser" type="text" form="installForm" required>
|
||||
<li><label for="iUpdatePassword">Password</label>
|
||||
<li><input id="iUpdatePassword" name="updatepassword" type="password" form="installForm">
|
||||
</ul>
|
||||
|
||||
<h3>Delete</h3>
|
||||
|
||||
<p>The delete user is only used by the API for deleting existing database entries. </p>
|
||||
|
||||
<ul>
|
||||
<li><label for="iDeleteUser">User</label>
|
||||
<li><input id="iDeleteUser" name="deleteuser" type="text" form="installForm" required>
|
||||
<li><label for="iDeletePassword">Password</label>
|
||||
<li><input id="iDeletePassword" name="deletepassword" type="password" form="installForm">
|
||||
</ul>
|
||||
|
||||
<p><button class="prev">Previous</button><button class="next">Next</button></p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div id="page-5" class="page">
|
||||
<section>
|
||||
<img alt="Logo" src="img/logo.png" class="logo" width="50">
|
||||
<h1>Configuration</h1>
|
||||
<div>
|
||||
<p>The following configuration options are general WebApp settings.</p>
|
||||
<ul>
|
||||
<li><label for="iOrgName">Organization Name</label>
|
||||
<li><input id="iOrgName" name="orgname" type="text" value="Karaka" form="installForm" required>
|
||||
<li><label for="iAdminName">Admin Login</label>
|
||||
<li><input id="iAdminName" name="adminname" type="text" value="admin" form="installForm" required>
|
||||
<li><label for="iAdminPassword">Admin Password</label>
|
||||
<li><input id="iAdminPassword" name="adminpassword" type="password" form="installForm" required>
|
||||
<li><label for="iAdminEmail">Admin Email</label>
|
||||
<li><input id="iAdminEmail" name="adminemail" type="email" form="installForm" required>
|
||||
<li><label for="iDomain">Top Level domain</label>
|
||||
<li><input id="iDomain" name="domain" type="text" value="<?= $this->request->uri->host; ?>" form="installForm" placeholder="demo.com" pattern="^((?!(www\.|http)).)*$" required>
|
||||
<li><label for="iWebSubdir">Web Subdirectory</label>
|
||||
<li><input id="iWebSubdir" name="websubdir" type="text" value="/<?= \substr($this->request->uri->getPath(), \stripos($this->request->uri->getPath(), 'Install/') + 8); ?>" form="installForm" required>
|
||||
<li><label for="iDefaultLang">Default Language</label>
|
||||
<li><select id="iDefaultLang" name="defaultlang" form="installForm">
|
||||
<option value="en" selected>English
|
||||
</select>
|
||||
</ul>
|
||||
<p><button class="prev">Previous</button><button class="install" type="submit" form="installForm">Install</button></p>
|
||||
<input id="iApps" name="apps" type="hidden" value="Install/Application/Api, Install/Application/Backend, Install/Application/E404, Install/Application/E500, Install/Application/E503" form="installForm">
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div id="page-6" class="page">
|
||||
<section>
|
||||
<img alt="Logo" src="img/logo.png" class="logo" width="50">
|
||||
<h1>Installation</h1>
|
||||
<div>
|
||||
<p>Please wait until the installation finishes. You will be redirected to the backend
|
||||
afterwards.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
<script type="module">
|
||||
import { ResponseManager } from '../jsOMS/Message/Response/ResponseManager.js';
|
||||
import { EventManager } from '../jsOMS/Event/EventManager.js'
|
||||
import { Form } from '../jsOMS/UI/Component/Form.js'
|
||||
import { redirectMessage } from '../jsOMS/Model/Message/Redirect.js';
|
||||
import { Logger } from '../jsOMS/Log/Logger.js';
|
||||
|
||||
jsOMS.ready(function ()
|
||||
{
|
||||
/* navigation */
|
||||
const nextButtons = Array.prototype.slice.call(document.getElementsByClassName('next')),
|
||||
prevButtons = Array.prototype.slice.call(document.getElementsByClassName('prev')),
|
||||
nextButtonsLength = nextButtons.length,
|
||||
prevButtonsLength = prevButtons.length;
|
||||
|
||||
for (let i = 0; i < nextButtonsLength; ++i) {
|
||||
nextButtons[i].addEventListener('click', function() {
|
||||
let index = nextButtons.indexOf(this);
|
||||
|
||||
document.getElementsByTagName('main')[0].setAttribute(
|
||||
'style',
|
||||
'margin-left: ' + ((index + 1) * -100) + '%;'
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
for (let i = 0; i < prevButtonsLength; ++i) {
|
||||
prevButtons[i].addEventListener('click', function() {
|
||||
let index = prevButtons.indexOf(this);
|
||||
|
||||
document.getElementsByTagName('main')[0].setAttribute(
|
||||
'style',
|
||||
'margin-left: ' + (index * -100) + '%;'
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/* setup App */
|
||||
const app = {
|
||||
responseManager: new ResponseManager(),
|
||||
eventManager: new EventManager()
|
||||
};
|
||||
|
||||
app.responseManager.add('redirect', redirectMessage);
|
||||
|
||||
const formManager = new Form(app),
|
||||
logger = Logger.getInstance();
|
||||
|
||||
window.logger = logger;
|
||||
formManager.bind('installForm');
|
||||
formManager.get('installForm').injectSubmit(function(e) {
|
||||
const valid = e.isValid();
|
||||
|
||||
if (valid) {
|
||||
document.getElementsByTagName('main')[0].setAttribute(
|
||||
'style',
|
||||
'margin-left: ' + (5 * -100) + '%;'
|
||||
);
|
||||
|
||||
app.eventManager.trigger(e.id);
|
||||
} else {
|
||||
window.alert('You didn\'t fill out all required configuration fields. Please check your settings also on the previous pages.');
|
||||
}
|
||||
|
||||
return valid;
|
||||
});
|
||||
|
||||
formManager.get('installForm').setSuccess(function(e) {
|
||||
window.location.replace('http://' + document.getElementById('iDomain').value + document.getElementById('iWebSubdir').value + '/backend');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
1
app/web/Resources
Submodule
1
app/web/Resources
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 8caf616b7d25355ab14768c242a1b5d57bfc2f94
|
||||
15
app/web/Routes.php
Normal file
15
app/web/Routes.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'.*?/about' => 'FrontController:aboutView',
|
||||
'.*?/imprint' => 'FrontController:imprintView',
|
||||
'.*?/terms' => 'FrontController:termsView',
|
||||
'.*?/privacy' => 'FrontController:privacyView',
|
||||
'.*?/contact' => 'FrontController:contactView',
|
||||
|
||||
'^/*$' => 'FrontController:frontView',
|
||||
'.*?/login' => 'FrontController:loginView',
|
||||
|
||||
'.*?/api/download' => 'ApiController:downloadView',
|
||||
];
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td, nav, section, iframe, label {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a, img, button {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
input, select, textarea, .textarea, button {
|
||||
box-sizing: border-box;
|
||||
box-shadow: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
input:focus, select:focus, textarea:focus, .textarea:focus, button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: separate;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
i {
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
html, body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
max-height: 100%;
|
||||
font-weight: 100;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--main-bg-color: brown;
|
||||
}
|
||||
8
app/web/humans.txt
Normal file
8
app/web/humans.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/* TEAM */
|
||||
Location: Frankfurt, Germany
|
||||
Main developers: Dennis Eichhorn
|
||||
|
||||
/* SITE */
|
||||
Last update: 2022
|
||||
Standards: PHP 8.1, HTML5, CSS3, JavaScript
|
||||
Software: Sublime Text, Github, Git, Visual Studio Code
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
\ob_start();
|
||||
|
||||
require_once __DIR__ . '/phpOMS/Autoloader.php';
|
||||
|
||||
$App = new \Application();
|
||||
echo $App->run();
|
||||
|
||||
if (\ob_get_level() > 0) {
|
||||
\ob_end_flush();
|
||||
}
|
||||
5
app/web/robots.txt
Normal file
5
app/web/robots.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
User-Agent: *
|
||||
Disallow:
|
||||
Disallow: /Controllers
|
||||
Disallow: /Install
|
||||
Disallow: /phpOMS
|
||||
0
app/web/tpl/backend/password-forgot.tpl.php
Normal file
0
app/web/tpl/backend/password-forgot.tpl.php
Normal file
0
app/web/tpl/backend/password-reset.tpl.php
Normal file
0
app/web/tpl/backend/password-reset.tpl.php
Normal file
0
app/web/tpl/backend/register.tpl.php
Normal file
0
app/web/tpl/backend/register.tpl.php
Normal file
0
app/web/tpl/backend/resource-list.tpl.php
Normal file
0
app/web/tpl/backend/resource-list.tpl.php
Normal file
0
app/web/tpl/backend/resource-profile.tpl.php
Normal file
0
app/web/tpl/backend/resource-profile.tpl.php
Normal file
0
app/web/tpl/index.tpl.php
Normal file
0
app/web/tpl/index.tpl.php
Normal file
0
app/web/tpl/landing/landing.de.tpl.php
Normal file
0
app/web/tpl/landing/landing.de.tpl.php
Normal file
0
app/web/tpl/landing/landing.en.tpl.php
Normal file
0
app/web/tpl/landing/landing.en.tpl.php
Normal file
0
app/web/tpl/landing/pricing.de.tpl.php
Normal file
0
app/web/tpl/landing/pricing.de.tpl.php
Normal file
0
app/web/tpl/landing/pricing.en.tpl.php
Normal file
0
app/web/tpl/landing/pricing.en.tpl.php
Normal file
0
app/web/tpl/login.tpl.php
Normal file
0
app/web/tpl/login.tpl.php
Normal file
Loading…
Reference in New Issue
Block a user