Merge branch 'develop'

This commit is contained in:
Dennis Eichhorn 2024-04-24 23:44:15 +00:00
commit e2c0567fb6
26 changed files with 723 additions and 350 deletions

View File

@ -6,7 +6,7 @@ MAIN_PATH="/var/www/html/jingga/"
# 0 4 * * * /var/www/html/jingga/Build/Backup/cron.sh # 0 4 * * * /var/www/html/jingga/Build/Backup/cron.sh
# Create backup # Create backup
${MAIN_PATH}Build/Backup/backup.sh > /tmp/backup.log ${MAIN_PATH}Build/Backup/local.sh > /tmp/backup.log
# Mail log files # Mail log files
${MAIN_PATH}Build/Backup/mail.sh ${MAIL_PASSWORD} /tmp/backup.log ${MAIN_PATH}Build/Backup/mail.sh ${MAIL_PASSWORD} /tmp/backup.log

View File

@ -22,17 +22,21 @@ sql_exit=$?
# Create file backup # Create file backup
BACKUP_PATH="/mnt/d/backup" BACKUP_PATH="/mnt/d/backup/backup.borg"
TO_BACKUP="/var/www/html" TO_BACKUP="/var/www/html"
REMOTE_USER="user" #REMOTE_USER="user"
REMOTE_SERVER="192.168.178.38" #REMOTE_SERVER="192.168.178.38"
REMOTE_PORT="2022" #REMOTE_PORT="2022"
# Setting this, so the repo does not need to be given on the commandline: # Setting this, so the repo does not need to be given on the commandline:
export BORG_REPO=ssh://${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_PORT}${BACKUP_PATH} #export BORG_REPO=ssh://${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_PORT}${BACKUP_PATH}
# See the section "Passphrase notes" for more infos. # See the section "Passphrase notes" for more infos.
export BORG_PASSPHRASE='sorden' export BORG_PASSPHRASE='password'
# Global settings
export BORG_RELOCATED_REPO_ACCESS_IS_OK=no
export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=no
## Create repository ## Create repository
# borg init -v --encryption=repokey ${BACKUP_PATH} # borg init -v --encryption=repokey ${BACKUP_PATH}
@ -47,26 +51,28 @@ borg create \
--list \ --list \
--stats \ --stats \
--show-rc \ --show-rc \
--one-file-system \
--compression lz4 \ --compression lz4 \
--checkpoint-interval 86400 \
--exclude-caches \ --exclude-caches \
--exclude 'home/*/.cache/*' \ --exclude 'home/*/.cache/*' \
--exclude 'var/tmp/*' \ --exclude 'var/tmp/*' \
--exclude '*.log' \
\ \
::'{hostname}-{utcnow}' \ ${BACKUP_PATH}::${TIMESTAMP}-$$-www \
${TO_BACKUP} ${TO_BACKUP}
backup_exit=$? backup_exit=$?
## Only keep 7 daily, 4 weekly and 6 monthly backups ## Only keep 1 daily, 0 weekly and 3 monthly backups
info "Pruning repository" info "Pruning repository"
borg prune \ borg prune \
--list \ --list \
--glob-archives '{hostname}-*' \ --glob-archives '{hostname}-*' \
--show-rc \ --show-rc \
--keep-daily 7 \ --keep-daily 1 \
--keep-weekly 4 \ --keep-monthly 3 \
--keep-monthly 6 \
--keep-yearly 10 --keep-yearly 10
prune_exit=$? prune_exit=$?
@ -78,17 +84,25 @@ borg compact ${BACKUP_PATH}
compact_exit=$? compact_exit=$?
## Check integrity
info "Checking repository"
borg check --verify-data ${BACKUP_PATH}
check_exit=$?
# Handle global exit code # Handle global exit code
global_exit=$(( sql_exit > backup_exit ? sql_exit : backup_exit )) global_exit=$(( sql_exit > backup_exit ? sql_exit : backup_exit ))
global_exit=$(( prune_exit > global_exit ? prune_exit : global_exit )) global_exit=$(( prune_exit > global_exit ? prune_exit : global_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit )) global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
global_exit=$(( check_exit > global_exit ? check_exit : global_exit ))
if [ ${global_exit} -eq 0 ]; then if [ ${global_exit} -eq 0 ]; then
info "Backup finished successfully" info "Backup finished successfully"
elif [ ${global_exit} -eq 1 ]; then elif [ ${global_exit} -eq 1 ]; then
info "Backup, Prune, and/or Compact finished with warnings" info "Backup, Prune, Compact and/or Check finished with warnings"
else else
info "Backup, Prune, and/or Compact finished with errors" info "Backup, Prune, Compact and/or Check finished with errors"
fi fi
exit ${global_exit} exit ${global_exit}

View File

@ -34,7 +34,4 @@ TabWidth: 4
UseTab: Never UseTab: Never
IndentPPDirectives: BeforeHash IndentPPDirectives: BeforeHash
IndentCaseLabels: true IndentCaseLabels: true
BraceWrappingAfterControlStatementStyle: BWACS_MultiLine
BreakBeforeBinaryOperators: BOS_All
AllowShortBlocksOnASingleLine: SBS_Empty
AllowShortIfStatementsOnASingleLine: Never AllowShortIfStatementsOnASingleLine: Never

10
Config/jasmine.json Normal file
View File

@ -0,0 +1,10 @@
{
"spec_dir": "tests",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
],
"stopSpecOnExpectationFailure": false,
"random": true
}

13
Config/jasmine_build.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
SEARCH_DIR="./tests"
FILES=$(find $SEARCH_DIR -type f -name "*Test.js")
for FILE in $FILES; do
INPUT_PATH="$FILE"
OUT_PATH="${INPUT_PATH/Test.js/Spec.js}"
npx esbuild $INPUT_PATH --bundle --outfile=$OUT_PATH
done

View File

@ -1,251 +0,0 @@
{
"Api Controller": {
"scope": "php,tpl.php",
"prefix": "apicontroller",
"body": [
"/**",
" * Karaka",
" *",
" * PHP Version 8.1",
" *",
" * @package Modules\\\\$1",
" * @copyright Dennis Eichhorn",
" * @license OMS License 1.0",
" * @version 1.0.0",
" * @link https://jingga.app",
" */",
"declare(strict_types=1);",
"",
"namespace Modules\\\\$1\\Controller;",
"",
"use phpOMS\\Account\\Account;",
"use phpOMS\\Localization\\ISO639x1Enum;",
"use phpOMS\\Message\\NotificationLevel;",
"use phpOMS\\Message\\RequestAbstract;",
"use phpOMS\\Message\\ResponseAbstract;",
"use phpOMS\\Model\\Message\\FormValidation;",
"use phpOMS\\Utils\\Parser\\Markdown\\Markdown;",
"",
"/**",
" * $1 controller class.",
" *",
" * @package Modules\\\\$1",
" * @license OMS License 1.0",
" * @link https://jingga.app",
" * @since 1.0.0",
" */",
"final class ApiController extends Controller",
"{",
"",
"}",
""
],
"description": "Create a api controller"
},
"Null Model": {
"scope": "php,tpl.php",
"prefix": "nullmodel",
"body": [
"/**",
" * Karaka",
" *",
" * PHP Version 8.1",
" *",
" * @package Modules\\\\$1",
" * @copyright Dennis Eichhorn",
" * @license OMS License 1.0",
" * @version 1.0.0",
" * @link https://jingga.app",
" */",
"declare(strict_types=1);",
"",
"namespace Modules\\\\$1\\Models;",
"",
"/**",
" * Null model",
" *",
" * @package Modules\\\\$1",
" * @license OMS License 1.0",
" * @link https://jingga.app",
" * @since 1.0.0",
" */",
"class Null$2 extends $2",
"{",
"}",
""
],
"description": "Create a Null Model"
},
"Model": {
"scope": "php,tpl.php",
"prefix": "model",
"body": [
"/**",
" * Karaka",
" *",
" * PHP Version 8.1",
" *",
" * @package Modules\\\\$1",
" * @copyright Dennis Eichhorn",
" * @license OMS License 1.0",
" * @version 1.0.0",
" * @link https://jingga.app",
" */",
"declare(strict_types=1);",
"",
"namespace Modules\\\\$1\\Models;",
"",
"/**",
" * Null model",
" *",
" * @package Modules\\\\$1",
" * @license OMS License 1.0",
" * @link https://jingga.app",
" * @since 1.0.0",
" */",
"class $2 implements \\JsonSerializable",
"{",
" private \\$id = 0;",
"",
" public function getId() : int",
" {",
" return \\$this->id;",
" }",
"",
" /**",
" * {@inheritdoc}",
" */",
" public function toArray() : array",
" {",
" return [",
" 'id' => \\$this->id,",
" ];",
" }",
"",
" /**",
" * {@inheritdoc}",
" */",
" public function __toString()",
" {",
" return (string) \\json_encode(\\$this->toArray());",
" }",
"",
" /**",
" * {@inheritdoc}",
" */",
" public function jsonSerialize()",
" {",
" eturn \\$this->toArray();",
" }",
"}",
""
],
"description": "Create a Model"
},
"Api Create": {
"scope": "php,tpl.php",
"prefix": "apicreate",
"body": [
" /**",
" * Api method to create a $1",
" *",
" * @param RequestAbstract \\$request Request",
" * @param ResponseAbstract \\$response Response",
" * @param mixed \\$data Generic data",
" *",
" * @return void",
" *",
" * @api",
" *",
" * @since 1.0.0",
" */",
" public function api$2Create(RequestAbstract \\$request, ResponseAbstract \\$response, \\$data = null) : void",
" {",
" if (!empty(\\$val = \\$this->validate$2Create(\\$request))) {",
" \\$response->set('$1_create', new FormValidation(\\$val));",
"",
" return;",
" }",
"",
" $$1 = \\$this->create$2FromRequest(\\$request);",
" \\$this->createModel(\\$request->header->account, $$1, $2Mapper::class, '$1');",
" \\$this->fillJsonResponse(\\$request, \\$response, NotificationLevel::OK, '$2', '$2 successfully created', $$1);",
" }",
"",
" /**",
" * Validate $1 from account create request",
" *",
" * @param RequestAbstract \\$request Request",
" *",
" * @return array<string, bool>",
" *",
" * @since 1.0.0",
" */",
" private function validate$2Create(RequestAbstract \\$request) : array",
" {",
" $val = [];",
" if ((\\$val['account'] = empty(\\$request->getData('account')))",
" ) {",
" return $val;",
" }",
"",
" return [];",
" }",
"",
" /**",
" * Method to create $1 from request.",
" *",
" * @param RequestAbstract \\$request Request",
" *",
" * @return $2",
" *",
" * @since 1.0.0",
" */",
" private function create$2FromRequest(RequestAbstract \\$request) : $2",
" {",
" $$1 = new $2();",
"",
" return $$1;",
" }",
""
],
"description": "Create a model in the api controller"
},
"Enum Create": {
"scope": "php",
"prefix": "enum",
"body": [
"/**",
" * Karaka",
" *",
" * PHP Version 8.1",
" *",
" * @package Modules\\\\$1",
" * @copyright Dennis Eichhorn",
" * @license OMS License 1.0",
" * @version 1.0.0",
" * @link https://jingga.app",
" */",
"declare(strict_types=1);",
"",
"namespace Modules\\\\$1\\Models;",
"",
"use phpOMS\\Stdlib\\Base\\Enum;",
"",
"/**",
" * $2 enum.",
" *",
" * @package Modules\\\\$1",
" * @license OMS License 1.0",
" * @link https://jingga.app",
" * @since 1.0.0",
" */",
"abstract class $2 extends Enum",
"{",
" public const OPEN = 1;",
"}",
""
],
"description": "Create an enum"
}
}

View File

@ -11,7 +11,7 @@ $mapper = <<< MAPPER
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package {$namespace} * @package {$namespace}
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
@ -84,7 +84,7 @@ $model = <<< MODEL
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package {$namespace} * @package {$namespace}
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
@ -136,7 +136,7 @@ $nullmodel = <<< NULLMODEL
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package {$namespace} * @package {$namespace}
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn

View File

@ -2,7 +2,7 @@
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package Helper * @package Helper
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn

View File

@ -2,7 +2,7 @@
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package Helper * @package Helper
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn

View File

@ -2,7 +2,7 @@
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package Helper * @package Helper
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn

View File

@ -2,7 +2,7 @@
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package Helper * @package Helper
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
@ -59,7 +59,7 @@ foreach ($modules as $module) {
. '/**' . "\n" . '/**' . "\n"
. ' * Jingga' . "\n" . ' * Jingga' . "\n"
. ' *' . "\n" . ' *' . "\n"
. ' * PHP Version 8.1' . "\n" . ' * PHP Version 8.2' . "\n"
. ' *' . "\n" . ' *' . "\n"
. ' * @package tests' . "\n" . ' * @package tests' . "\n"
. ' * @copyright Dennis Eichhorn' . "\n" . ' * @copyright Dennis Eichhorn' . "\n"

View File

@ -2,7 +2,7 @@
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* Inspect .lang.php files and check them for errors/optimization * Inspect .lang.php files and check them for errors/optimization
* *

View File

@ -2,7 +2,7 @@
/** /**
* Jingga * Jingga
* *
* PHP Version 8.1 * PHP Version 8.2
* *
* @package Helper * @package Helper
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn

View File

@ -5,7 +5,7 @@ echo "# Build develop"
echo "#################################################" echo "#################################################"
git submodule foreach "git checkout develop || true" git submodule foreach "git checkout develop || true"
git submodule foreach git pull git submodule foreach "git pull || true"
git checkout develop git checkout develop
git pull git pull
@ -19,22 +19,22 @@ echo "#################################################"
git submodule foreach git add . git submodule foreach git add .
git submodule foreach "git commit -m 'Preparing for master update' || true" git submodule foreach "git commit -m 'Preparing for master update' || true"
git submodule foreach git push git submodule foreach "git push || true"
echo "#################################################" echo "#################################################"
echo "# Update develop main repo" echo "# Update develop main repo"
echo "#################################################" echo "#################################################"
git git add . git add .
git git commit -m "Preparing for master update" git commit -m "Preparing for master update"
git git push git push
echo "#################################################" echo "#################################################"
echo "# Switch to master" echo "# Switch to master"
echo "#################################################" echo "#################################################"
git submodule foreach git checkout master git submodule foreach "git checkout master || true"
git submodule foreach git pull git submodule foreach "git pull || true"
git checkout master git checkout master
git pull git pull
@ -43,16 +43,16 @@ echo "#################################################"
echo "# Merge develop" echo "# Merge develop"
echo "#################################################" echo "#################################################"
git submodule foreach git merge develop git submodule foreach "git merge develop || true"
git git merge develop git merge develop
git submodule foreach git add . git submodule foreach git add .
git submodule foreach "git commit -m 'Update master' || true" git submodule foreach "git commit -m 'Update master' || true"
git submodule foreach git push git submodule foreach "git push || true"
git git add . git add .
git git commit -m "Update master" git commit -m "Update master"
git git push git push
echo "#################################################" echo "#################################################"
echo "# Switch to develop" echo "# Switch to develop"

View File

@ -0,0 +1,644 @@
const {By,Key,Builder} = require("selenium-webdriver");
const chrome = require('selenium-webdriver/chrome');
const http = require('http');
let fs = require('fs');
let path = require('path');
const base = 'http://192.168.178.38';
const language = 'en';
const src = [
'legal/privacy',
'legal/terms',
'legal/imprint',
'forgot',
'admin/module/settings',
'admin/account/list',
'admin/account/settings',
'admin/account/create',
'admin/group/list',
'admin/group/settings',
'admin/group/create',
'admin/module/list',
'admin/module/info',
'admin/module/log',
'admin/module/route/list',
'admin/module/hook/list',
'admin/audit/list',
'admin/audit/view',
'admin/audit/view?id=1',
'admin/audit/view?id=9999',
'organization/organigram',
'organization/unit/list',
'organization/unit/view',
'organization/unit/view?id=1',
'organization/unit/view?id=9999',
'organization/unit/create',
'organization/department/list',
'organization/department/view',
'organization/department/view?id=1',
'organization/department/view?id=9999',
'organization/department/create',
'organization/position/list',
'organization/position/view',
'organization/position/view?id=1',
'organization/position/view?id=9999',
'organization/position/create',
'help/general',
'help/module/list',
'help/module/view',
'help/module/view?id=1',
'help/module/view?id=9999',
'help/developer',
'tag/create',
'tag/list',
'tag/view',
'tag/view?id=1',
'tag/view?id=9999',
'admin/module/settings?id=Media',
'media/list',
'media/upload',
'media/file/create',
'media/collection/create',
'media/view',
'media/view?id=1',
'media/view?id=9999',
'profile/list',
'profile/view',
'profile/view?id=1',
'profile/view?id=9999',
'admin/module/settings/view/create',
'admin/module/settings?id=Navigation',
'admin/module/navigation/list',
'cms/application/list',
'cms/application/page/list',
'cms/application/page',
'cms/application/post/list',
'cms/application/files',
'cms/application/create',
'admin/monitoring/general',
'admin/monitoring/stats',
'admin/monitoring/log/list',
'admin/monitoring/log/view',
'admin/monitoring/log/view?id=1',
'admin/monitoring/log/view?id=9999',
'helper/template/create',
'helper/report/create',
'helper/list',
'helper/report/view',
'helper/report/view?id=1',
'helper/report/view?id=9999',
'search',
'calendar/dashboard',
'editor/create',
'editor/list',
'editor/view',
'editor/view?id=1',
'editor/view?id=9999',
'editor/edit',
'notification/dashboard',
'task/dashboard',
'task/list',
'task/view',
'task/view?id=1',
'task/view?id=9999',
'task/create',
'task/analysis',
'messages/dashboard',
'messages/template/list',
'messages/template/view',
'messages/template/view?id=1',
'messages/template/view?id=9999',
'checklist/list',
'checklist/view',
'checklist/view?id=1',
'checklist/view?id=9999',
'checklist/template/list',
'checklist/template/create',
'checklist/template/view',
'checklist/template/view?id=1',
'checklist/template/view?id=9999',
'checklist/template/task/view',
'checklist/template/task/view?id=1',
'checklist/template/task/view?id=9999',
'checklist/template/task/create',
'news/dashboard',
'news/article',
'news/archive',
'news/draft/list',
'news/create',
'news/edit',
'kanban',
'kanban/dashboard',
'kanban/archive',
'kanban/board',
'kanban/card/view',
'kanban/card/view?id=1',
'kanban/card/view?id=9999',
'kanban/card/create',
'kanban/create',
'kanban/edit',
'admin/module/settings?id=QA',
'qa/dashboard',
'qa/question/view',
'qa/question/view?id=1',
'qa/question/view?id=9999',
'qa/question/create',
'qa/app/list',
'qa/app/view',
'qa/app/view?id=1',
'qa/app/view?id=9999',
'qa/app/create',
'workflow/template/list',
'workflow/template/view',
'workflow/template/view?id=1',
'workflow/template/view?id=9999',
'workflow/template/create',
'workflow/instance/list',
'workflow/instance/view',
'workflow/instance/view?id=1',
'workflow/instance/view?id=9999',
'humanresource/staff/list',
'humanresource/staff/view',
'humanresource/staff/view?id=1',
'humanresource/staff/view?id=9999',
'humanresource/staff/create',
'humanresource/department/list',
'humanresource/department/view',
'humanresource/department/view?id=1',
'humanresource/department/view?id=9999',
'humanresource/position/list',
'humanresource/position/view',
'humanresource/position/view?id=1',
'humanresource/position/view?id=9999',
'humanresource/timerecording/dashboard',
'private/timerecording/dashboard',
'private/timerecording/session',
'contract/list',
'contract/view',
'contract/view?id=1',
'contract/view?id=9999',
'contract/create',
'contract/type/list',
'contract/type/view',
'contract/type/view?id=1',
'contract/type/view?id=9999',
'contract/type/create',
'contract/attribute/type/list',
'contract/attribute/type/view',
'contract/attribute/type/view?id=1',
'contract/attribute/type/view?id=9999',
'contract/attribute/type/create',
'contract/attribute/value/view',
'contract/attribute/value/view?id=1',
'contract/attribute/value/view?id=9999',
'contract/attribute/value/create',
'support/list',
'support/ticket/view',
'support/ticket/view?id=1',
'support/ticket/view?id=9999',
'support/create',
'support/analysis/dashboard',
'support/settings',
'sales/client/attribute/type/list',
'sales/client/attribute/type/view',
'sales/client/attribute/type/view?id=1',
'sales/client/attribute/type/view?id=9999',
'sales/client/attribute/type/create',
'sales/client/attribute/value/view',
'sales/client/attribute/value/view?id=1',
'sales/client/attribute/value/view?id=9999',
'sales/client/attribute/value/create',
'sales/client/list',
'sales/client/create',
'sales/client/view',
'sales/client/view?id=1',
'sales/client/view?id=9999',
'sales/client/analysis',
'accounting/entry/dashboard',
'accounting/entry/list',
'accounting/entry/view',
'accounting/entry/view?id=1',
'accounting/entry/view?id=9999',
'accounting/entry/create',
'accounting/entry/archive',
'accounting/entry/template/list',
'accounting/coa/view',
'accounting/coa/view?id=1',
'accounting/coa/view?id=9999',
'accounting/coa/list',
'accounting/coa/create',
'accounting/costcenter/list',
'accounting/costobject/list',
'accounting/costcenter/view',
'accounting/costcenter/view?id=1',
'accounting/costcenter/view?id=9999',
'accounting/costcenter/create',
'accounting/costobject/view',
'accounting/costobject/view?id=1',
'accounting/costobject/view?id=9999',
'accounting/costobject/create',
'accounting/supplier/list',
'accounting/client/list',
'accounting/supplier/view',
'accounting/supplier/view?id=1',
'accounting/supplier/view?id=9999',
'accounting/client/view',
'accounting/client/view?id=1',
'accounting/client/view?id=9999',
'item/attribute/type/list',
'item/attribute/type/view',
'item/attribute/type/view?id=1',
'item/attribute/type/view?id=9999',
'item/attribute/type/create',
'item/attribute/value/view',
'item/attribute/value/view?id=1',
'item/attribute/value/view?id=9999',
'item/attribute/value/create',
'item/list',
'item/create',
'item/view',
'item/view?id=1',
'item/view?id=9999',
'sales/item/list',
'sales/item/view',
'sales/item/view?id=1',
'sales/item/view?id=9999',
'purchase/item/list',
'purchase/item/view',
'purchase/item/view?id=1',
'purchase/item/view?id=9999',
'warehouse/item/list',
'warehouse/item/view',
'warehouse/item/view?id=1',
'warehouse/item/view?id=9999',
'purchase/analysis/item',
'production/item/list',
'production/item/view',
'production/item/view?id=1',
'production/item/view?id=9999',
'item/material/list',
'item/material/view',
'item/material/view?id=1',
'item/material/view?id=9999',
'item/material/create',
'purchase/supplier/attribute/type/list',
'purchase/supplier/attribute/type/view',
'purchase/supplier/attribute/type/view?id=1',
'purchase/supplier/attribute/type/view?id=9999',
'purchase/supplier/attribute/type/create',
'purchase/supplier/attribute/value/view',
'purchase/supplier/attribute/value/view?id=1',
'purchase/supplier/attribute/value/view?id=9999',
'purchase/supplier/attribute/value/create',
'purchase/supplier/list',
'purchase/supplier/create',
'purchase/supplier/view',
'purchase/supplier/view?id=1',
'purchase/supplier/view?id=9999',
'purchase/analysis/supplier',
'finance/tax/code/list',
'finance/tax/code/view',
'finance/tax/code/view?id=1',
'finance/tax/code/view?id=9999',
'finance/tax/code/create',
'sales/bill/create',
'sales/bill/list',
'sales/bill/archive',
'sales/bill/view',
'sales/bill/view?id=1',
'sales/bill/view?id=9999',
'purchase/bill/create',
'purchase/bill/list',
'purchase/bill/archive',
'purchase/bill/view',
'purchase/bill/view?id=1',
'purchase/bill/view?id=9999',
'purchase/bill/upload',
'warehouse/bill/create',
'warehouse/bill/list',
'warehouse/bill/archive',
'warehouse/bill/view',
'warehouse/bill/view?id=1',
'warehouse/bill/view?id=9999',
'private/purchase/recognition/dashboard',
'private/purchase/recognition/upload',
'private/purchase/recognition/bill',
'purchase/recognition/dashboard',
'purchase/recognition/upload',
'purchase/recognition/bill',
'bill/payment/list',
'bill/payment/view',
'bill/payment/view?id=1',
'bill/payment/view?id=9999',
'bill/shipping/list',
'bill/shipping/view',
'bill/shipping/view?id=1',
'bill/shipping/view?id=9999',
'finance/tax/combination/list',
'finance/tax/combination/view',
'finance/tax/combination/view?id=1',
'finance/tax/combination/view?id=9999',
'finance/tax/combination/create',
'purchase/order/suggestion/view',
'purchase/order/suggestion/view?id=1',
'purchase/order/suggestion/view?id=9999',
'purchase/order/suggestion/create',
'purchase/order/suggestion/list',
'sales/analysis',
'sales/analysis/bill',
'sales/analysis/rep',
'sales/analysis/region',
'sales/analysis/client',
'sales/analysis/item',
'warehouse/stock/list',
'warehouse/stock/view',
'warehouse/stock/view?id=1',
'warehouse/stock/view?id=9999',
'warehouse/stock/create',
'warehouse/stock/type/list',
'warehouse/stock/type/view',
'warehouse/stock/type/view?id=1',
'warehouse/stock/type/view?id=9999',
'warehouse/stock/type/create',
'warehouse/stock/location/list',
'warehouse/stock/location/view',
'warehouse/stock/location/view?id=1',
'warehouse/stock/location/view?id=9999',
'warehouse/stock/location/create',
'qualitymanagement/report/list',
'qualitymanagement/report/view',
'qualitymanagement/report/view?id=1',
'qualitymanagement/report/view?id=9999',
'qualitymanagement/report/create',
'qualitymanagement/audit/list',
'qualitymanagement/audit/view',
'qualitymanagement/audit/view?id=1',
'qualitymanagement/audit/view?id=9999',
'equipment/attribute/type/list',
'equipment/attribute/type/view',
'equipment/attribute/type/view?id=1',
'equipment/attribute/type/view?id=9999',
'equipment/attribute/type/create',
'equipment/attribute/value/view',
'equipment/attribute/value/view?id=1',
'equipment/attribute/value/view?id=9999',
'equipment/attribute/value/create',
'equipment/list',
'equipment/create',
'equipment/view',
'equipment/view?id=1',
'equipment/view?id=9999',
'equipment/inspection/list',
'equipment/inspection/type/list',
'equipment/inspection/create',
'equipment/inspection/view',
'equipment/inspection/view?id=1',
'equipment/inspection/view?id=9999',
'accounting/asset/attribute/type/list',
'accounting/asset/attribute/type/view',
'accounting/asset/attribute/type/view?id=1',
'accounting/asset/attribute/type/view?id=9999',
'accounting/asset/list',
'accounting/asset/view',
'accounting/asset/view?id=1',
'accounting/asset/view?id=9999',
'accounting/asset/create',
'accounting/asset/table',
'fleet/vehicle/attribute/type/list',
'fleet/vehicle/attribute/type/view',
'fleet/vehicle/attribute/type/view?id=1',
'fleet/vehicle/attribute/type/view?id=9999',
'fleet/vehicle/attribute/type/create',
'fleet/vehicle/attribute/value/view',
'fleet/vehicle/attribute/value/view?id=1',
'fleet/vehicle/attribute/value/view?id=9999',
'fleet/vehicle/attribute/value/create',
'fleet/vehicle/list',
'fleet/vehicle/create',
'fleet/vehicle/view',
'fleet/vehicle/view?id=1',
'fleet/vehicle/view?id=9999',
'fleet/driver/attribute/type/list',
'fleet/driver/attribute/type/view',
'fleet/driver/attribute/type/view?id=1',
'fleet/driver/attribute/type/view?id=9999',
'fleet/driver/attribute/type/create',
'fleet/driver/attribute/value/view',
'fleet/driver/attribute/value/view?id=1',
'fleet/driver/attribute/value/view?id=9999',
'fleet/driver/attribute/value/create',
'fleet/driver/list',
'fleet/driver/create',
'fleet/driver/view',
'fleet/driver/view?id=1',
'fleet/driver/view?id=9999',
'fleet/inspection/list',
'fleet/inspection/vehicle/type/list',
'fleet/inspection/vehicle/create',
'fleet/inspection/vehicle/view',
'fleet/inspection/vehicle/view?id=1',
'fleet/inspection/vehicle/view?id=9999',
'fleet/inspection/driver/type/list',
'fleet/inspection/driver/create',
'fleet/inspection/driver/view',
'fleet/inspection/driver/view?id=1',
'fleet/inspection/driver/view?id=9999',
'wiki',
'wiki/dashboard',
'wiki/category/list',
'wiki/category/view',
'wiki/category/view?id=1',
'wiki/category/view?id=9999',
'wiki/category/create',
'wiki/doc/view',
'wiki/doc/view?id=1',
'wiki/doc/view?id=9999',
'wiki/doc/create',
'wiki/doc/edit',
'wiki/doc/list',
'wiki/app/list',
'wiki/app/view',
'wiki/app/view?id=1',
'wiki/app/view?id=9999',
'wiki/app/create',
'admin/exchange/import/list',
'admin/exchange/export/list',
'admin/exchange/import/view',
'admin/exchange/import/view?id=1',
'admin/exchange/import/view?id=9999',
'admin/exchange/export/view',
'admin/exchange/export/view?id=1',
'admin/exchange/export/view?id=9999',
'admin/exchange/log/list',
'admin/exchange/log',
'finance/investment/list',
'finance/investment/view',
'finance/investment/view?id=1',
'finance/investment/view?id=9999',
'finance/investment/option/create',
'finance/investment/option/view',
'finance/investment/option/view?id=1',
'finance/investment/option/view?id=9999',
'finance/investment/create',
'private/investment/list',
'private/investment/create',
'private/investment/view',
'private/investment/view?id=1',
'private/investment/view?id=9999',
'finance/loan/list',
'finance/loan/view',
'finance/loan/view?id=1',
'finance/loan/view?id=9999',
'finance/loan/create',
'finance/loan/table',
'businessexpenses/expense/list',
'businessexpenses/expense/create',
'businessexpenses/expense/view',
'businessexpenses/expense/view?id=1',
'businessexpenses/expense/view?id=9999',
'businessexpenses/expense/element/view',
'businessexpenses/expense/element/view?id=1',
'businessexpenses/expense/element/view?id=9999',
'businessexpenses/expense/element/create',
'businessexpenses/type/list',
'businessexpenses/type/view',
'businessexpenses/type/view?id=1',
'businessexpenses/type/view?id=9999',
'businessexpenses/type/create',
'controlling/balance/dashboard',
'controlling/pl/dashboard',
'controlling/budget/dashboard',
'controlling/budget/pl',
'controlling/budget/balance',
'controlling/budget/sales',
'controlling/budget/material',
'controlling/budget/opex',
'controlling/budget/hr',
'controlling/budget/investment',
'controlling/budget/loan',
'controlling/budget/cashflow',
'controlling/budget/profitcenter',
'controlling/budget/projects',
'controlling/budget/marketing',
'controlling/budget/event',
'controlling/budget/leasing',
'warehouse/stocktaking/list',
'warehouse/stocktaking/overview',
'warehouse/stocktaking/area',
'warehouse/stocktaking/entry',
'warehouse/stocktaking/stats',
'warehouse/labeling/item/list',
'warehouse/labeling/item',
'warehouse/labeling/layout',
'warehouse/labeling/layout/list',
'production/list',
'production/create',
'production/view',
'production/view?id=1',
'production/view?id=9999',
'production/machine/list',
'production/machine/create',
'production/machine/view',
'production/machine/view?id=1',
'production/machine/view?id=9999',
'production/recipe/list',
'production/recipe/create',
'production/recipe/view',
'production/recipe/view?id=1',
'production/recipe/view?id=9999',
'orw/resource/list',
'orw/resource',
'orw/resource/create',
'orw/resource/report/list',
'orw/resource/report',
'projectmanagement/list',
'projectmanagement/create',
'projectmanagement/view',
'projectmanagement/view?id=1',
'projectmanagement/view?id=9999',
'eventmanagement/list',
'eventmanagement/create',
'eventmanagement/view',
'eventmanagement/view?id=1',
'eventmanagement/view?id=9999',
'controlling/riskmanagement/cockpit',
'controlling/riskmanagement/risk/list',
'controlling/riskmanagement/risk/create',
'controlling/riskmanagement/risk/view',
'controlling/riskmanagement/risk/view?id=1',
'controlling/riskmanagement/risk/view?id=9999',
'controlling/riskmanagement/cause/list',
'controlling/riskmanagement/cause/view',
'controlling/riskmanagement/cause/view?id=1',
'controlling/riskmanagement/cause/view?id=9999',
'controlling/riskmanagement/solution/list',
'controlling/riskmanagement/solution/view',
'controlling/riskmanagement/solution/view?id=1',
'controlling/riskmanagement/solution/view?id=9999',
'controlling/riskmanagement/department/list',
'controlling/riskmanagement/department/view',
'controlling/riskmanagement/department/view?id=1',
'controlling/riskmanagement/department/view?id=9999',
'controlling/riskmanagement/category/list',
'controlling/riskmanagement/category/view',
'controlling/riskmanagement/category/view?id=1',
'controlling/riskmanagement/category/view?id=9999',
'controlling/riskmanagement/category/create',
'controlling/riskmanagement/project/list',
'controlling/riskmanagement/project/view',
'controlling/riskmanagement/project/view?id=1',
'controlling/riskmanagement/project/view?id=9999',
'controlling/riskmanagement/process/list',
'controlling/riskmanagement/process/view',
'controlling/riskmanagement/process/view?id=1',
'controlling/riskmanagement/process/view?id=9999',
'controlling/riskmanagement/process/create',
'controlling/riskmanagement/settings/dashboard',
];
const length = src.length;
async function checkEndpoint(driver, url) {
await driver.get(url);
try {
await driver.findElement(By.xpath('//*[@alt="404 error image"]'));
return -1;
} catch(error) {
return 0;
} finally {
const data = await driver.takeScreenshot(true);
await fs.writeFileSync('C:/Users/spl1nes/screenshots/' + url.replace(/[^a-z0-9]/gi, '_').toLowerCase() + '.png', data, 'base64');
}
}
let dir = path.dirname('C:/Users/spl1nes/screenshots/');
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
(async function loop() {
const driver = await new Builder().forBrowser("chrome").build();
await driver.get(base);
await driver.manage().setTimeouts({ implicit: 3000 });
await driver.manage().window().setRect({ width: 1920, height: 1080 });
await driver.findElement(By.id('iLoginButton')).click();
await driver.sleep(1000);
let status = 0;
for (let i = 0; i < length; ++i) {
try {
status = await checkEndpoint(driver, base + '/' + language + '/' + src[i]);
} catch(error) {
console.error(error);
}
if (status !== 0) {
console.error(status +': ' + src[i]);
status = 0;
}
}
await driver.quit();
})();

0
ICAL.txt → ICLA.txt Executable file → Normal file
View File

View File

@ -1,10 +0,0 @@
#!/bin/bash
. config.sh
. ${BUILD_PATH}/Js/buildBase.sh
. ${BUILD_PATH}/Js/buildLib.sh
. ${BUILD_PATH}/Js/buildUI.sh
. ${BUILD_PATH}/Js/build3D.sh
. ${BUILD_PATH}/Js/buildChart.sh
. ${BUILD_PATH}/Js/buildSocket.sh

View File

View File

View File

@ -1,27 +0,0 @@
# JS files
SRC=0
SRC[0]="${ROOT_PATH}/jsOMS/Chart/ChartAbstract.js"
SRC[1]="${ROOT_PATH}/jsOMS/Chart/LineChart.js"
SRC[2]="${ROOT_PATH}/jsOMS/Chart/AreaChart.js"
SRC[3]="${ROOT_PATH}/jsOMS/Chart/DiffAreaChart.js"
SRC[4]="${ROOT_PATH}/jsOMS/Chart/StackedAreaChart.js"
SRC[5]="${ROOT_PATH}/jsOMS/Chart/ColumnChart.js"
SRC[6]="${ROOT_PATH}/jsOMS/Chart/BarChart.js"
SRC[7]="${ROOT_PATH}/jsOMS/Chart/GroupedColumnChart.js"
SRC[8]="${ROOT_PATH}/jsOMS/Chart/GroupedBarChart.js"
SRC[9]="${ROOT_PATH}/jsOMS/Chart/StackedColumnChart.js"
SRC[10]="${ROOT_PATH}/jsOMS/Chart/StackedBarChart.js"
SRC[11]="${ROOT_PATH}/jsOMS/Chart/PieChart.js"
SRC[12]="${ROOT_PATH}/jsOMS/Chart/DonutChart.js"
SRC[13]="${ROOT_PATH}/jsOMS/Chart/WaterfallChart.js"
SRC[14]="${ROOT_PATH}/jsOMS/Chart/VWaterfallChart.js"
SRC[15]="${ROOT_PATH}/jsOMS/Chart/PyramidChart.js"
SRC[16]="${ROOT_PATH}/jsOMS/Chart/ScatterplotChart.js"
SRC[17]="${ROOT_PATH}/jsOMS/Chart/CalendarChart.js"
SRC[18]="${ROOT_PATH}/jsOMS/Chart/CandlestickChart.js"
SRC[19]="${ROOT_PATH}/jsOMS/Chart/OhlcChart.js"
# JS files
OUT="${ROOT_PATH}/jsOMS/omsChart.js"
. Tools/jsBuilder.sh

View File

@ -1,11 +0,0 @@
# JS files
SRC=0
SRC[0]="${ROOT_PATH}/jsOMS/Utils/Dom.js"
SRC[1]="${ROOT_PATH}/jsOMS/Utils/StringUtils.js"
SRC[2]="${ROOT_PATH}/jsOMS/Utils/ArrayUtils.js"
SRC[3]="${ROOT_PATH}/jsOMS/Utils/Misc.js"
# JS files
OUT="${ROOT_PATH}/jsOMS/omsLib.js"
. Tools/jsBuilder.sh

View File

@ -1,10 +0,0 @@
# JS files
SRC=0
SRC[0]="${ROOT_PATH}/jsOMS/Math/Functions.js"
SRC[1]="${ROOT_PATH}/jsOMS/Math/Matrix.js"
SRC[2]="${ROOT_PATH}/jsOMS/Math/Evaluation.js"
# JS files
OUT="${ROOT_PATH}/jsOMS/omsMath.js"
. Tools/jsBuilder.sh

View File

View File

View File

@ -46,3 +46,7 @@ Unless required by applicable law or agreed to in writing, Licensor provides the
7. Limitation of Liability 7. Limitation of Liability
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
8. Future Changes
The Licensor may change the License for future versions as he sees fit.

View File

@ -20,7 +20,7 @@ The last feature is the backend and documentation generation based on the DocBlo
The build system will take care of most requirements, the following tools and commands have to be available on the system. The build system will take care of most requirements, the following tools and commands have to be available on the system.
software-properties-common npm git php8.1 php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear apache2 mysql-server postgresql postgresql-contrib vsftpd tesseract-ocr wget curl grep xarg sed composer software-properties-common npm git php8.2 php8.2-dev php8.2-cli php8.2-common php8.2-mysql php8.2-pgsql php8.2-xdebug php8.2-opcache php8.2-pdo php8.2-sqlite php8.2-mbstring php8.2-curl php8.2-imap php8.2-bcmath php8.2-zip php8.2-dom php8.2-xml php8.2-phar php8.2-gd php-pear apache2 mysql-server postgresql postgresql-contrib vsftpd tesseract-ocr wget curl grep xarg sed composer
## Inspections ## Inspections