NOTICKET: Refactor Project Layout
|
@ -1,5 +1,5 @@
|
|||
# define your env variables for the test env here
|
||||
KERNEL_CLASS='App\Kernel'
|
||||
KERNEL_CLASS='App\Framework\Kernel'
|
||||
APP_SECRET='$ecretf0rt3st'
|
||||
SYMFONY_DEPRECATIONS_HELPER=999999
|
||||
PANTHER_APP_ENV=panther
|
|
@ -11,22 +11,17 @@ jobs:
|
|||
- name: "Checkout"
|
||||
uses: "https://git.euph.dev/actions/checkout@v3"
|
||||
- name: "Install Dependencies"
|
||||
working-directory: app
|
||||
run: |
|
||||
parallel --halt soon,fail=1 ::: \
|
||||
"composer check-platform-reqs && composer install --no-scripts --audit" \
|
||||
"npm install --no-fund"
|
||||
- name: "TS Validation"
|
||||
working-directory: app/frontend
|
||||
run: "node ../node_modules/typescript/bin/tsc --noEmit"
|
||||
run: "node node_modules/typescript/bin/tsc --noEmit"
|
||||
- name: "Stylelint"
|
||||
working-directory: app/frontend/styles
|
||||
run: "node ../../node_modules/stylelint/bin/stylelint.mjs ."
|
||||
run: "node node_modules/stylelint/bin/stylelint.mjs ."
|
||||
- name: "ESLint"
|
||||
working-directory: app
|
||||
run: "node node_modules/eslint/bin/eslint.js frontend"
|
||||
run: "node node_modules/eslint/bin/eslint.js src"
|
||||
- name: "Twig CS Fixer"
|
||||
working-directory: app
|
||||
run: "vendor/bin/twig-cs-fixer lint"
|
||||
|
||||
qs_backend:
|
||||
|
@ -38,31 +33,10 @@ jobs:
|
|||
- name: "Checkout"
|
||||
uses: "https://git.euph.dev/actions/checkout@v3"
|
||||
- name: "Install Dependencies"
|
||||
working-directory: app
|
||||
run: |
|
||||
composer check-platform-reqs
|
||||
composer install --no-scripts --audit
|
||||
- name: "PHP CS Fixer"
|
||||
working-directory: app
|
||||
run: "vendor/bin/php-cs-fixer fix --dry-run --allow-risky=yes"
|
||||
- name: "PHP Stan"
|
||||
working-directory: app
|
||||
run: "vendor/bin/phpstan analyze"
|
||||
|
||||
qs_mixed:
|
||||
name: "QS Mixed"
|
||||
runs-on: "ubuntu-latest"
|
||||
container:
|
||||
image: "git.euph.dev/actions/runner-php-8.3:latest"
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: "https://git.euph.dev/actions/checkout@v3"
|
||||
- name: "Install Dependencies"
|
||||
working-directory: app
|
||||
run: |
|
||||
parallel --halt soon,fail=1 ::: \
|
||||
"composer check-platform-reqs && composer install --no-scripts --audit" \
|
||||
"npm install --no-fund"
|
||||
- name: "Lint"
|
||||
working-directory: app
|
||||
run: "node node_modules/eslint/bin/eslint.js frontend"
|
||||
|
|
35
.gitignore
vendored
|
@ -1 +1,36 @@
|
|||
###> symfony/framework-bundle ###
|
||||
/.env.local.php
|
||||
/.env.*.local
|
||||
/config/secrets/prod/prod.decrypt.private.php
|
||||
/public/bundles/
|
||||
/var/
|
||||
/vendor/
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
###> friendsofphp/php-cs-fixer ###
|
||||
/.php-cs-fixer.cache
|
||||
###< friendsofphp/php-cs-fixer ###
|
||||
|
||||
###> symfony/webpack-encore-bundle ###
|
||||
/node_modules/
|
||||
/public/build/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
###< symfony/webpack-encore-bundle ###
|
||||
|
||||
###> phpunit/phpunit ###
|
||||
/phpunit.xml
|
||||
.phpunit.result.cache
|
||||
###< phpunit/phpunit ###
|
||||
|
||||
###> symfony/phpunit-bridge ###
|
||||
.phpunit.result.cache
|
||||
/phpunit.xml
|
||||
###< symfony/phpunit-bridge ###
|
||||
|
||||
###> vincentlanglet/twig-cs-fixer ###
|
||||
/.twig-cs-fixer.cache
|
||||
###< vincentlanglet/twig-cs-fixer ###
|
||||
|
||||
.idea/
|
||||
.vscode/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
$finder = PhpCsFixer\Finder::create()
|
||||
->in(__DIR__ . '/backend')
|
||||
->in(__DIR__ . '/src')
|
||||
->in(__DIR__ . '/tests');
|
||||
|
||||
$config = new PhpCsFixer\Config();
|
4
.stylelintignore
Normal file
|
@ -0,0 +1,4 @@
|
|||
*.ts
|
||||
*.twig
|
||||
*.json
|
||||
*.php
|
|
@ -1 +0,0 @@
|
|||
Subproject commit e3ffebf2f07f0190213520e0bbc10e589c449e7b
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 15a145970f5e4ae7cb2a71b74e99fa02c8302c28
|
205
Justfile
Normal file
|
@ -0,0 +1,205 @@
|
|||
_default:
|
||||
@bin/just/choose.sh {{ source_file() }} choose
|
||||
|
||||
alias i := install
|
||||
alias start := up
|
||||
alias stop := halt
|
||||
alias clean := fresh
|
||||
|
||||
screen_frontend_session_name := "euph-website_frontend"
|
||||
linter_options := "All\nPHP\nTS\nSCSS\nTwig"
|
||||
migration_options := "Generate\nExecute\n"
|
||||
suite_options := "All\nUnit\nIntegration\nWeb"
|
||||
|
||||
# Checks whether the requriements are met
|
||||
[group('main')]
|
||||
check:
|
||||
#!/bin/bash
|
||||
source bin/just/colors.sh
|
||||
source bin/just/check.sh
|
||||
|
||||
printf "${BLUE_BG}${BLACK_FG} Checking Justfile Requirements ${CLEAR}\n"
|
||||
check_cmd "jq" "jq"
|
||||
check_cmd "fzf" "fzf"
|
||||
check_cmd "screen" "screen"
|
||||
check_cmd "grep" "grep"
|
||||
check_cmd "printf" "Printf"
|
||||
check_cmd "sed" "sed"
|
||||
check_cmd "awk" "awk"
|
||||
check_cmd "cut" "cut"
|
||||
check_cmd "highlight" "highlight"
|
||||
if ((error > 0 )); then
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
printf "${BLUE_BG}${BLACK_FG} Checking Backend Requirements ${CLEAR}\n"
|
||||
check_cmd "php" "Php"
|
||||
check_cmd "composer" "Composer"
|
||||
check_cmd "symfony" "Symfony cli"
|
||||
current_composer_version=$(composer --version 2>/dev/null | awk '{print $3}' | cut -d '.' -f 1)
|
||||
if [ "${current_composer_version}" = "2" ]; then
|
||||
printf >&2 "${GREEN_FG}✔ Composer${BLUE_FG} Version ${GREEN_FG}${current_composer_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Wrong Composer Version${YELLOW_FG} is installed!\n Version ${RED_FG}2${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
||||
error = 1
|
||||
fi
|
||||
required_php_version=$(cat .php-version)
|
||||
current_php_version=$(symfony php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;")
|
||||
if [ "${current_php_version}" = "${required_php_version}" ]; then
|
||||
printf >&2 "${GREEN_FG}✔ PHP${BLUE_FG} Version ${GREEN_FG}${current_php_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Wrong PHP Version${YELLOW_FG} is installed!\n Version ${RED_FG}${required_php_version}${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
||||
symfony local:php:list
|
||||
error = 1
|
||||
fi
|
||||
check "[ $(php -m | grep -c PDO) -eq 1 ]" "Php PDO"
|
||||
check "[ $(php -m | grep -c pdo_mysql) -eq 1 ]" "Php Mysql PDO"
|
||||
check_cmd "docker" "Docker"
|
||||
if echo "$(docker compose version 2>&1)" | grep -q '[0-9]\+\.[0-9]\+\.[0-9]\+'; then
|
||||
printf >&2 "${GREEN_FG}✔ Docker Compose${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Docker Compose${YELLOW_FG} is ${RED_FG}not installed${YELLOW_FG}! \n"
|
||||
error=1
|
||||
fi
|
||||
if ((error > 0 )); then
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
printf "${BLUE_BG}${BLACK_FG} Checking Frontend Requirements ${CLEAR}\n"
|
||||
check_cmd "volta" "Volta"
|
||||
check_cmd "node" "Node"
|
||||
check_cmd "npm" "NPM"
|
||||
required_node_version=$( \
|
||||
cat package.json \
|
||||
| jq .volta.node \
|
||||
| cut -c 2- \
|
||||
| cut -d '.' -f 1 \
|
||||
)
|
||||
current_major_node_version=$(node -v | cut -c 2- | cut -d '.' -f 1)
|
||||
current_node_version=$(node -v | cut -c 2-)
|
||||
if [ "${current_major_node_version}" = "${required_node_version}" ]; then
|
||||
printf >&2 "${GREEN_FG}✔ Node${BLUE_FG} Version ${GREEN_FG}${current_node_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Wrong Node Version${YELLOW_FG} is installed!\n Version ${RED_FG}${required_node_version}${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
||||
error = 1
|
||||
fi
|
||||
if ((error > 0 )); then
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Installs the dependencies
|
||||
[group('main')]
|
||||
install:
|
||||
parallel ::: "composer install" "npm i --no-fund"
|
||||
|
||||
# Starts the local Development Setup
|
||||
[group('main')]
|
||||
up: halt check
|
||||
#!/bin/bash
|
||||
source bin/just/colors.sh
|
||||
docker compose up -d
|
||||
symfony local:server:start -d --no-tls
|
||||
screen -dmS {{ screen_frontend_session_name }} npm run watch >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
printf "${GREEN_FG}Frontend was started${CLEAR}\n"
|
||||
else
|
||||
printf "${RED_FG}Frontend didn't start${CLEAR}\n"
|
||||
fi
|
||||
|
||||
# Stops the local Development Setup
|
||||
[group('main')]
|
||||
halt:
|
||||
#!/bin/bash
|
||||
source bin/just/colors.sh
|
||||
symfony local:server:stop
|
||||
docker compose down
|
||||
screen -XS {{ screen_frontend_session_name }} quit >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
printf "${GREEN_FG}Frontend was stopped${CLEAR}\n"
|
||||
fi
|
||||
|
||||
[group('main')]
|
||||
attach:
|
||||
#!/bin/bash
|
||||
source bin/just/colors.sh
|
||||
if screen -ls | grep -q {{ screen_frontend_session_name }}; then
|
||||
screen -r {{ screen_frontend_session_name }}
|
||||
else
|
||||
printf "${RED_FG}Frontend is down${CLEAR}\n"
|
||||
fi
|
||||
|
||||
# Starts the local Development Setup Fresh, with no Cache and the reseted test Data
|
||||
[group('main')]
|
||||
fresh: halt install up
|
||||
@just backend::demo-data
|
||||
|
||||
# Lints all Files, or if specified only a specifc Set
|
||||
[group('utility')]
|
||||
lint linter="":
|
||||
#!/bin/bash
|
||||
chosen_linter=$(
|
||||
printf "{{ linter_options }}" |\
|
||||
fzf --header="Which linters should be run?" --height 8 -i -q "{{ linter }}" -1
|
||||
)
|
||||
case "$chosen_linter" in
|
||||
*All*) \
|
||||
parallel ::: \
|
||||
"vendor/bin/php-cs-fixer fix --allow-risky=yes" \
|
||||
"npm run lint:ts:fix" \
|
||||
"npm run lint:scss:fix" \
|
||||
"vendor/bin/twig-cs-fixer lint --fix && php bin/console lint:twig" \
|
||||
;;
|
||||
*PHP*) vendor/bin/php-cs-fixer fix --allow-risky=yes ;;
|
||||
*TS*) npm run lint:ts:fix ;;
|
||||
*SCSS*) npm run lint:scss:fix ;;
|
||||
*Twig*) vendor/bin/twig-cs-fixer lint --fix && php bin/console lint:twig ;;
|
||||
esac
|
||||
|
||||
# Runs the Static Code Analysis
|
||||
[group('utility')]
|
||||
stan:
|
||||
@vendor/bin/phpstan analyze --memory-limit=2G
|
||||
|
||||
# Runs all Tests, or if specified only a specific Suite
|
||||
[group('utility')]
|
||||
test suite="":
|
||||
#!/bin/bash
|
||||
chosen_suite=$(
|
||||
printf "{{ suite_options }}" |\
|
||||
fzf --header="which tests should be run?" --height 7 -i -q "{{ suite }}" -1
|
||||
)
|
||||
if [ "$chosen_suite" != "All" ]; then
|
||||
suite_arg="--testsuite $chosen_suite"
|
||||
fi
|
||||
symfony console doctrine:database:drop --if-exists --force --env=test
|
||||
symfony console doctrine:database:create --env=test
|
||||
symfony console doctrine:schema:update --force --complete --env=test
|
||||
symfony console doctrine:fixtures:load -n --env=test
|
||||
symfony console cache:clear --env=test
|
||||
vendor/bin/phpunit $suite_arg
|
||||
|
||||
# Create and Execute Migrations
|
||||
[group('utility')]
|
||||
migration migration="":
|
||||
#!/bin/bash
|
||||
chosen_migration=$(
|
||||
printf "{{ migration_options }}" |\
|
||||
fzf --header="Which migration action to perform?" --height 7 -i -q "{{ migration }}" -1
|
||||
)
|
||||
case "$chosen_migration" in
|
||||
*Generate*) symfony console doctrine:migrations:diff ;;
|
||||
*Execute*) symfony console doctrine:migrations:migrate ;;
|
||||
esac
|
||||
|
||||
# Sets up a Fresh Data Set
|
||||
[group('utility')]
|
||||
demo-data:
|
||||
#!/bin/bash
|
||||
symfony console doctrine:database:drop --if-exists --force
|
||||
symfony console doctrine:database:create
|
||||
symfony console doctrine:migrations:migrate -n
|
||||
symfony console doctrine:fixtures:load -n
|
||||
symfony console cache:clear
|
1
License
|
@ -1 +0,0 @@
|
|||
Subproject commit 3b4ec4a2573d549cb77a5d2533eacbde1d51498d
|
|
@ -1,3 +1 @@
|
|||
# Euph Website
|
||||
|
||||
**License**: [license](https://git.euph.dev/Euph/License)
|
||||
|
|
36
app/.gitignore
vendored
|
@ -1,36 +0,0 @@
|
|||
###> symfony/framework-bundle ###
|
||||
/.env.local.php
|
||||
/.env.*.local
|
||||
/config/secrets/prod/prod.decrypt.private.php
|
||||
/public/bundles/
|
||||
/var/
|
||||
/vendor/
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
###> friendsofphp/php-cs-fixer ###
|
||||
/.php-cs-fixer.cache
|
||||
###< friendsofphp/php-cs-fixer ###
|
||||
|
||||
###> symfony/webpack-encore-bundle ###
|
||||
/node_modules/
|
||||
/public/build/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
###< symfony/webpack-encore-bundle ###
|
||||
|
||||
###> phpunit/phpunit ###
|
||||
/phpunit.xml
|
||||
.phpunit.result.cache
|
||||
###< phpunit/phpunit ###
|
||||
|
||||
###> symfony/phpunit-bridge ###
|
||||
.phpunit.result.cache
|
||||
/phpunit.xml
|
||||
###< symfony/phpunit-bridge ###
|
||||
|
||||
###> vincentlanglet/twig-cs-fixer ###
|
||||
/.twig-cs-fixer.cache
|
||||
###< vincentlanglet/twig-cs-fixer ###
|
||||
|
||||
.idea/
|
||||
.vscode/
|
12
app/.gitmodules
vendored
|
@ -1,12 +0,0 @@
|
|||
[submodule "License"]
|
||||
path = License
|
||||
url = git@git.euph.dev:Euph/License.git
|
||||
branch = master
|
||||
[submodule "Code_of_Conduct"]
|
||||
path = Code_of_Conduct
|
||||
url = git@git.euph.dev:Euph/Code_of_Conduct.git
|
||||
branch = master
|
||||
[submodule "Code_Standards"]
|
||||
path = Code_Standards
|
||||
url = git@git.euph.dev:Euph/Code_Standards.wiki.git
|
||||
branch = master
|
89
app/Justfile
|
@ -1,89 +0,0 @@
|
|||
_default:
|
||||
@bin/just/choose.sh {{ source_file() }} choose
|
||||
|
||||
mod backend
|
||||
mod frontend
|
||||
|
||||
alias i := install
|
||||
alias start := up
|
||||
alias stop := halt
|
||||
alias clean := fresh
|
||||
|
||||
# Checks whether the requriements are met
|
||||
[group('main')]
|
||||
check:
|
||||
#!/bin/bash
|
||||
source bin/just/colors.sh
|
||||
source bin/just/check.sh
|
||||
printf "${BLUE_BG}${BLACK_FG} Checking Justfile Requirements ${CLEAR}\n"
|
||||
check_cmd "jq" "jq"
|
||||
check_cmd "fzf" "fzf"
|
||||
check_cmd "screen" "screen"
|
||||
check_cmd "grep" "grep"
|
||||
check_cmd "printf" "Printf"
|
||||
check_cmd "sed" "sed"
|
||||
check_cmd "awk" "awk"
|
||||
check_cmd "cut" "cut"
|
||||
check_cmd "highlight" "highlight"
|
||||
if ((error > 0 )); then
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
just backend::check
|
||||
just frontend::check
|
||||
|
||||
# Installs the dependencies
|
||||
[group('main')]
|
||||
install:
|
||||
-@just backend::install
|
||||
-@just frontend::install
|
||||
|
||||
# Starts the local Development Setup
|
||||
[group('main')]
|
||||
up: halt check
|
||||
-@just backend::up
|
||||
-@just frontend::up
|
||||
|
||||
# Stops the local Development Setup
|
||||
[group('main')]
|
||||
halt:
|
||||
-@just backend::halt
|
||||
-@just frontend::halt
|
||||
|
||||
# Starts the local Development Setup Fresh, with no Cache and the reseted test Data
|
||||
[group('main')]
|
||||
fresh: halt install up
|
||||
@just backend::demo-data
|
||||
|
||||
linter_options := "All\nPHP\nTS\nSCSS\nTwig"
|
||||
# Lints all Files, or if specified only a specifc Set
|
||||
[group('utility')]
|
||||
lint linter="":
|
||||
#!/bin/bash
|
||||
chosen_linter=$(
|
||||
printf "{{ linter_options }}" |\
|
||||
fzf --header="Which linters should be run?" --height 7 -i -q "{{ linter }}" -1
|
||||
)
|
||||
case "$chosen_linter" in
|
||||
*All*) \
|
||||
just frontend::lint all && just backend::lint;;
|
||||
*PHP*) just backend::lint ;;
|
||||
*TS*) just frontend::lint TS ;;
|
||||
*SCSS*) just frontend::lint all SCSS ;;
|
||||
*Twig*) just frontend::lint TWIG ;;
|
||||
esac
|
||||
|
||||
# Runs the Static Code Analysis
|
||||
[group('utility')]
|
||||
stan:
|
||||
@just backend::stan
|
||||
|
||||
# Runs all Tests, or if specified only a specific Suite
|
||||
[group('utility')]
|
||||
test:
|
||||
@just backend::test
|
||||
|
||||
# Create and Execute Migrations
|
||||
[group('utility')]
|
||||
migration:
|
||||
@just backend::migration
|
|
@ -1,115 +0,0 @@
|
|||
__default:
|
||||
@../bin/just/choose.sh {{ source_file() }} choose
|
||||
|
||||
# Checks whether the requriements are met
|
||||
[group('main')]
|
||||
check:
|
||||
#!/bin/bash
|
||||
source ../bin/just/colors.sh
|
||||
source ../bin/just/check.sh
|
||||
printf "${BLUE_BG}${BLACK_FG} Checking Backend Requirements ${CLEAR}\n"
|
||||
cd ..
|
||||
|
||||
check_cmd "php" "Php"
|
||||
check_cmd "composer" "Composer"
|
||||
current_composer_version=$(composer --version 2>/dev/null | awk '{print $3}' | cut -d '.' -f 1)
|
||||
if [ "${current_composer_version}" = "2" ]; then
|
||||
printf >&2 "${GREEN_FG}✔ Composer${BLUE_FG} Version ${GREEN_FG}${current_composer_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Wrong Composer Version${YELLOW_FG} is installed!\n Version ${RED_FG}2${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
||||
error = 1
|
||||
fi
|
||||
|
||||
check_cmd "symfony" "Symfony cli"
|
||||
required_php_version=$(cat .php-version)
|
||||
current_php_version=$(symfony php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;")
|
||||
if [ "${current_php_version}" = "${required_php_version}" ]; then
|
||||
printf >&2 "${GREEN_FG}✔ PHP${BLUE_FG} Version ${GREEN_FG}${current_php_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Wrong PHP Version${YELLOW_FG} is installed!\n Version ${RED_FG}${required_php_version}${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
||||
symfony local:php:list
|
||||
error = 1
|
||||
fi
|
||||
check "[ $(php -m | grep -c PDO) -eq 1 ]" "Php PDO"
|
||||
check "[ $(php -m | grep -c pdo_mysql) -eq 1 ]" "Php Mysql PDO"
|
||||
|
||||
check_cmd "docker" "Docker"
|
||||
check "$(docker compose version >/dev/null 2>&1)" "Docker Compose"
|
||||
|
||||
if ((error > 0 )); then
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Installs the dependencies
|
||||
[group('main')]
|
||||
install:
|
||||
cd .. && composer install
|
||||
|
||||
# Starts the local Development Setup
|
||||
[group('main')]
|
||||
up: halt
|
||||
-@cd .. && docker compose up -d
|
||||
-@cd .. && symfony local:server:start -d --no-tls
|
||||
|
||||
# Stops the local Development Setup
|
||||
[group('main')]
|
||||
halt:
|
||||
-@cd .. && symfony local:server:stop
|
||||
-@cd .. && docker compose down
|
||||
|
||||
suite_options := "All\nUnit\nIntegration\nWeb"
|
||||
# Runs all Tests, or if specified only a specific Suite
|
||||
[group('utility')]
|
||||
test suite="":
|
||||
#!/bin/bash
|
||||
chosen_suite=$(
|
||||
printf "{{ suite_options }}" |\
|
||||
fzf --header="which tests should be run?" --height 7 -i -q "{{ suite }}" -1
|
||||
)
|
||||
if [ "$chosen_suite" != "All" ]; then
|
||||
suite_arg="--testsuite $chosen_suite"
|
||||
fi
|
||||
cd ..
|
||||
symfony console doctrine:database:drop --if-exists --force --env=test
|
||||
symfony console doctrine:database:create --env=test
|
||||
symfony console doctrine:schema:update --force --complete --env=test
|
||||
symfony console doctrine:fixtures:load -n --env=test
|
||||
symfony console cache:clear --env=test
|
||||
vendor/bin/phpunit $suite_arg
|
||||
|
||||
# Lints the PHP Backend Code
|
||||
[group('utility')]
|
||||
lint:
|
||||
@cd .. && vendor/bin/php-cs-fixer fix --allow-risky=yes
|
||||
|
||||
# Runs the Static Code Analysis
|
||||
[group('utility')]
|
||||
stan:
|
||||
@cd .. && vendor/bin/phpstan analyze --memory-limit=2G
|
||||
|
||||
migration_options := "Generate\nExecute\n"
|
||||
# Create and Execute Migrations
|
||||
[group('utility')]
|
||||
migration migration="":
|
||||
#!/bin/bash
|
||||
chosen_migration=$(
|
||||
printf "{{ migration_options }}" |\
|
||||
fzf --header="Which migration action to perform?" --height 7 -i -q "{{ migration }}" -1
|
||||
)
|
||||
cd ..
|
||||
case "$chosen_migration" in
|
||||
*Generate*) symfony console doctrine:migrations:diff ;;
|
||||
*Execute*) symfony console doctrine:migrations:migrate ;;
|
||||
esac
|
||||
|
||||
# Sets up a Fresh Data Set
|
||||
[group('utility')]
|
||||
demo-data:
|
||||
#!/bin/bash
|
||||
cd ..
|
||||
symfony console doctrine:database:drop --if-exists --force
|
||||
symfony console doctrine:database:create
|
||||
symfony console doctrine:migrations:migrate -n
|
||||
symfony console doctrine:fixtures:load -n
|
||||
symfony console cache:clear
|
|
@ -1,80 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 1. testing for important env vars to be set
|
||||
[[ -z "$SYMFONY_DECRYPTION_SECRET" ]] && echo "SYMFONY_DECRYPTION_SECRET missing" && exit 1;
|
||||
[[ -z "$WEBROOT" ]] && echo "WEBROOT missing" && exit 1;
|
||||
[[ -f ~/.bash_profile ]] && source ~/.bash_profile
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 2. syncing persistent shared data into new release and making sure folder structure exists
|
||||
touch ./public/maintenance.flag
|
||||
|
||||
mkdir -p ../../shared/log
|
||||
mkdir -p ../../shared/sessions
|
||||
mkdir -p ../../shared/images
|
||||
mkdir -p ../../shared/videos
|
||||
mkdir -p ../../shared/assets
|
||||
|
||||
mkdir -p ./var
|
||||
mkdir -p ./public/assets
|
||||
|
||||
ln -sf ../../shared/log ./var/log
|
||||
ln -sf ../../shared/sessions ./var/sessions
|
||||
ln -sf ../../shared/images ./public/assets/images
|
||||
ln -sf ../../shared/videos ./public/assets/videos
|
||||
ln -sf ../../shared/assets ./public/assets/assets
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 3. Update robots.txt
|
||||
echo "Sitemap: $WEBROOT/sitemap.xml" >> ./public/robots.txt
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 4. decrypt secret vault into local prod environment
|
||||
php ./bin/console secrets:decrypt-to-local --force
|
||||
rm -rf ./config/secrets/prod/
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 5. move temp folder to release-x folder with the next higher number
|
||||
# and delete the release-x folder with the lowest number
|
||||
cd ..
|
||||
# Set the release folder prefix and initialize counter
|
||||
prefix="release-"
|
||||
counter=0
|
||||
# Loop through all the folders with the given prefix and find the highest numbered release folder
|
||||
for folder in $prefix*; do
|
||||
if [[ -d $folder ]]; then
|
||||
num=${folder#$prefix}
|
||||
if [[ $num =~ ^[0-9]+$ && $num -gt $counter ]]; then
|
||||
counter=$num
|
||||
fi
|
||||
fi
|
||||
done
|
||||
# Rename the "temp" folder to the next highest release folder
|
||||
new_release="$prefix$((counter+1))"
|
||||
mv temp "$new_release"
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 6. symlink new release
|
||||
ln -sfn $new_release latest
|
||||
cd $new_release
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 7. run migrations and update plugins/apps
|
||||
php ./bin/console doctrine:migrations:migrate -n
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 8. clean up and end maintenance mode
|
||||
php ./bin/console cache:clear
|
||||
rm -f ./public/maintenance.flag
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 9. Clear the Webcache
|
||||
~/bin/cachetool.phar opcache:reset
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# 10. remove all but the last four releases (including the one just created)
|
||||
# We do this after the deployment in order to reduce the chance of deleted folders reappearing because of old processes
|
||||
# still using them.
|
||||
ls -d ../release-* | sort -t- -k2n | head -n -4 | xargs --no-run-if-empty rm -rf
|
|
@ -1,6 +0,0 @@
|
|||
twig:
|
||||
default_path: '%kernel.project_dir%/frontend/templates'
|
||||
|
||||
when@test:
|
||||
twig:
|
||||
strict_variables: true
|
|
@ -1,81 +0,0 @@
|
|||
vich_uploader:
|
||||
db_driver: orm
|
||||
|
||||
metadata:
|
||||
type: attribute
|
||||
|
||||
mappings:
|
||||
job_overview_picture:
|
||||
uri_prefix: /assets/images/jobs/overview-picture
|
||||
upload_destination: '%kernel.project_dir%/public/assets/images/jobs/overview-picture'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
job_banner:
|
||||
uri_prefix: /assets/images/jobs/banner
|
||||
upload_destination: '%kernel.project_dir%/public/assets/images/jobs/banner'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
job_video:
|
||||
uri_prefix: /assets/videos/jobs
|
||||
upload_destination: '%kernel.project_dir%/public/assets/videos/jobs'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
job_video-thumbnail:
|
||||
uri_prefix: /assets/videos/jobs/thumbnails
|
||||
upload_destination: '%kernel.project_dir%/public/assets/videos/jobs/thumbnails'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
event_video:
|
||||
uri_prefix: /assets/videos/events
|
||||
upload_destination: '%kernel.project_dir%/public/assets/videos/events'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
event_video-thumbnail:
|
||||
uri_prefix: /assets/videos/events/thumbnails
|
||||
upload_destination: '%kernel.project_dir%/public/assets/videos/events/thumbnails'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
asset:
|
||||
uri_prefix: /assets/assets
|
||||
upload_destination: '%kernel.project_dir%/public/assets/assets'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
|
||||
when@test:
|
||||
vich_uploader:
|
||||
mappings:
|
||||
job_overview_picture:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
||||
job_banner:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
||||
job_video-thumbnail:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
||||
job_video:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
||||
event_video-thumbnail:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
||||
event_video:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
||||
asset:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
|
@ -1,15 +0,0 @@
|
|||
controllers:
|
||||
resource:
|
||||
path: ../backend/
|
||||
namespace: App
|
||||
type: attribute
|
||||
|
||||
presta_sitemap:
|
||||
resource: "@PrestaSitemapBundle/config/routing.yml"
|
||||
|
||||
when@dev:
|
||||
test_style:
|
||||
path: /test/styles
|
||||
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
|
||||
defaults:
|
||||
template: 'test/styles.html.twig'
|
|
@ -1,29 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||
|
||||
use App\Markdown\CommonMarkMarkdownParserAdapter;
|
||||
use App\Markdown\MarkdownParserInterface;
|
||||
use App\Security\User;
|
||||
use App\StaticData\StaticDataService;
|
||||
use League\CommonMark\CommonMarkConverter;
|
||||
use League\CommonMark\MarkdownConverter;
|
||||
|
||||
return function(ContainerConfigurator $container): void {
|
||||
$services = $container->services()
|
||||
->defaults()
|
||||
->autowire()
|
||||
->autoconfigure()
|
||||
;
|
||||
|
||||
$services
|
||||
->load('App\\', '../backend/')
|
||||
->exclude('../backend/{DependencyInjection,Entity,Kernel.php}')
|
||||
;
|
||||
|
||||
$services->set(CommonMarkConverter::class);
|
||||
$services->alias(MarkdownConverter::class, CommonMarkConverter::class);
|
||||
$services->alias(MarkdownParserInterface::class, CommonMarkMarkdownParserAdapter::class);
|
||||
};
|
|
@ -1,3 +0,0 @@
|
|||
import '@styles/app.scss';
|
||||
import '@pkg/stimulus';
|
||||
import '@pkg/flowbite';
|
|
@ -1,5 +0,0 @@
|
|||
declare enum HttpCodes {
|
||||
OK = 200
|
||||
}
|
||||
|
||||
export {HttpCodes};
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"controllers": [],
|
||||
"entrypoints": []
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
import {Controller} from '@hotwired/stimulus';
|
||||
|
||||
export default class extends Controller {
|
||||
|
||||
static targets: Array<string> = ['container'];
|
||||
declare readonly containerTarget: HTMLElement;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
afterLoad(identifier: string, application: HTMLElement): void {
|
||||
console.log(this.containerTarget);
|
||||
}
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
__default:
|
||||
@../bin/just/choose.sh {{ source_file() }} choose
|
||||
|
||||
# Checks whether the requriements are met
|
||||
[group('main')]
|
||||
check:
|
||||
#!/bin/bash
|
||||
source ../bin/just/colors.sh
|
||||
source ../bin/just/check.sh
|
||||
printf "${BLUE_BG}${BLACK_FG} Checking Frontend Requirements ${CLEAR}\n"
|
||||
|
||||
check_cmd "volta" "Volta"
|
||||
check_cmd "node" "Node"
|
||||
check_cmd "npm" "NPM"
|
||||
|
||||
required_node_version=$( \
|
||||
cat ../package.json \
|
||||
| jq .volta.node \
|
||||
| cut -c 2- \
|
||||
| cut -d '.' -f 1 \
|
||||
)
|
||||
current_major_node_version=$(node -v | cut -c 2- | cut -d '.' -f 1)
|
||||
current_node_version=$(node -v | cut -c 2-)
|
||||
if [ "${current_major_node_version}" = "${required_node_version}" ]; then
|
||||
printf >&2 "${GREEN_FG}✔ Node${BLUE_FG} Version ${GREEN_FG}${current_node_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
||||
else
|
||||
printf >&2 "${RED_FG}✘ Wrong Node Version${YELLOW_FG} is installed!\n Version ${RED_FG}${required_node_version}${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
||||
error = 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Installs the dependencies
|
||||
[group('main')]
|
||||
install:
|
||||
cd .. && npm i --no-fund
|
||||
|
||||
session_name := "euph-website_frontend"
|
||||
# Starts the local Development Setup
|
||||
[group('main')]
|
||||
up: halt
|
||||
#!/bin/bash
|
||||
source ../bin/just/colors.sh
|
||||
cd .. && screen -dmS {{ session_name }} npm run watch >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
printf "${GREEN_FG}Frontend was started${CLEAR}\n"
|
||||
else
|
||||
printf "${RED_FG}Frontend didn't start${CLEAR}\n"
|
||||
fi
|
||||
|
||||
# Stops the local Development Setup
|
||||
[group('main')]
|
||||
halt:
|
||||
#!/bin/bash
|
||||
source ../bin/just/colors.sh
|
||||
screen -XS {{ session_name }} quit >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
printf "${GREEN_FG}Frontend was stopped${CLEAR}\n"
|
||||
fi
|
||||
|
||||
[group('main')]
|
||||
attach:
|
||||
#!/bin/bash
|
||||
source ../bin/just/colors.sh
|
||||
if screen -ls | grep -q {{ session_name }}; then
|
||||
screen -r {{ session_name }}
|
||||
else
|
||||
printf "${RED_FG}Frontend is down${CLEAR}\n"
|
||||
fi
|
||||
|
||||
linter_options := "All\nTS\nSCSS\nTwig"
|
||||
# Lints all Files, or if specified only a specifc Set
|
||||
[group('utility')]
|
||||
lint linter="":
|
||||
#!/bin/bash
|
||||
chosen_linter=$(
|
||||
printf "{{ linter_options }}" |\
|
||||
fzf --header="Which linters should be run?" --height 6 -i -q "{{ linter }}" -1
|
||||
)
|
||||
cd ..
|
||||
case "$chosen_linter" in
|
||||
*All*) \
|
||||
npm run lint:ts:fix && \
|
||||
npm run lint:scss:fix && \
|
||||
vendor/bin/twig-cs-fixer lint --fix && php bin/console lint:twig ;;
|
||||
*TS*) npm run lint:ts:fix ;;
|
||||
*SCSS*) npm run lint:scss:fix ;;
|
||||
*Twig*) vendor/bin/twig-cs-fixer lint --fix && php bin/console lint:twig ;;
|
||||
esac
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
import 'flowbite';
|
||||
import {initFlowbite} from 'flowbite';
|
||||
|
||||
initFlowbite();
|
|
@ -1,79 +0,0 @@
|
|||
#burger-menu {
|
||||
@apply fixed top-0 right-0 h-screen overflow-y-auto z-40;
|
||||
@apply flex flex-col p-2 gap-2 w-64;
|
||||
@apply bg-gray-100 dark:bg-gray-700;
|
||||
|
||||
|
||||
&__button-open {
|
||||
@apply ml-auto h-full aspect-square;
|
||||
}
|
||||
|
||||
&__button-close {
|
||||
@apply h-8 w-8 absolute right-2 aspect-square;
|
||||
}
|
||||
|
||||
&__user-section {
|
||||
@apply flex flex-col items-center;
|
||||
@apply text-black dark:text-white;
|
||||
}
|
||||
|
||||
&__user-picture-wrapper {
|
||||
@apply w-1/3 aspect-square mx-auto;
|
||||
}
|
||||
|
||||
&__user-name {
|
||||
@apply app__text-bold text-xl;
|
||||
@apply h-6;
|
||||
}
|
||||
|
||||
&__user-email {
|
||||
@apply app__text-light text-base;
|
||||
@apply h-6;
|
||||
}
|
||||
|
||||
&__user-info {
|
||||
@apply app__text-light text-base;
|
||||
@apply h-6;
|
||||
}
|
||||
|
||||
&__user-actions {
|
||||
@apply inline-flex mt-2;
|
||||
|
||||
button {
|
||||
@apply inline-flex p-1;
|
||||
@apply bg-transparent;
|
||||
@apply app__text text-sm;
|
||||
@apply border border-r-0 border-gray-900 dark:border-white;
|
||||
|
||||
&:first-of-type {
|
||||
@apply rounded-s-lg;
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
@apply rounded-e-lg border-r;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__login {
|
||||
@apply flex p-2 gap-2 items-center justify-center;
|
||||
@apply rounded-lg bg-blue-500 app__text;
|
||||
}
|
||||
|
||||
&__nav {
|
||||
@apply text-lg app__text;
|
||||
|
||||
&-list {
|
||||
@apply flex flex-col gap-2;
|
||||
}
|
||||
|
||||
&-item {
|
||||
@apply h-8;
|
||||
}
|
||||
|
||||
&-link {
|
||||
@apply flex p-1 gap-2 items-center;
|
||||
@apply rounded-md hover:bg-gray-200 dark:hover:bg-gray-600;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,71 +0,0 @@
|
|||
<button
|
||||
id="burger-menu__button-open"
|
||||
type="button"
|
||||
data-drawer-target="burger-menu"
|
||||
data-drawer-show="burger-menu"
|
||||
data-drawer-placement="right"
|
||||
aria-controls="burger-menu"
|
||||
>
|
||||
{% include 'icons/bars.svg.twig' with {'class': 'h-full w-full'} %}
|
||||
</button>
|
||||
<div
|
||||
id="burger-menu"
|
||||
class="transition-transform translate-x-full"
|
||||
tabindex="-1"
|
||||
>
|
||||
<button
|
||||
type="button"
|
||||
id="burger-menu__button-close"
|
||||
data-drawer-hide="burger-menu"
|
||||
aria-controls="burger-menu"
|
||||
>
|
||||
{% include 'icons/close.svg.twig' with {'class': 'h-full w-full'} %}
|
||||
</button>
|
||||
<div id="burger-menu__user-section">
|
||||
<div id="burger-menu__user-picture-wrapper">
|
||||
{% include 'icons/user-placeholder.svg.twig' with {'class': 'h-full w-full'} %}
|
||||
</div>
|
||||
{% if logged_in %}
|
||||
<span id="burger-menu__user-name">Username</span>
|
||||
<span id="burger-menu__user-email">username@email.com</span>
|
||||
<div id="burger-menu__user-actions">
|
||||
{{ _self.user_action('Profile', 'user') }}
|
||||
{{ _self.user_action('Settings', 'settings') }}
|
||||
{{ _self.user_action('Logout', 'logout') }}
|
||||
</div>
|
||||
{% else %}
|
||||
<span id="burger-menu__user-info">not logged in</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if not logged_in %}
|
||||
<hr/>
|
||||
<a id="burger-menu__login">
|
||||
{% include 'icons/euphcloud.svg.twig' with {'class': 'w-6 h-6'} %}
|
||||
<span>Login with Euphcloud</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
<hr/>
|
||||
<nav id="burger-menu__nav">
|
||||
<ul id="burger-menu__nav-list">
|
||||
{{ _self.nav_item('Test1', '#test1', 'bars') }}
|
||||
{{ _self.nav_item('Test2', '#test2', 'bars') }}
|
||||
{{ _self.nav_item('Test3', '#test3', 'bars') }}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
{% macro user_action(name, icon) %}
|
||||
<button>
|
||||
{% include 'icons/' ~ icon ~ '.svg.twig' with {'class': 'h-6 w-6'} %}
|
||||
<span>{{ name }}</span>
|
||||
</button>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro nav_item(name, href, icon) %}
|
||||
<li id="burger-menu__nav-item">
|
||||
<a id="burger-menu__nav-link" href="{{ href }}">
|
||||
{% include 'icons/' ~ icon ~ '.svg.twig' with {'class': 'h-6 w-6'} %}
|
||||
<span class="flex-1">{{ name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endmacro %}
|
|
@ -1,16 +0,0 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-width="2"
|
||||
d="M5 7h14M5 12h14M5 17h14"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 352 B |
|
@ -1,17 +0,0 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M6 18 17.94 6M18 18 6.06 6"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 387 B |
|
@ -1,17 +0,0 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M20 12H8m12 0-4 4m4-4-4-4M9 4H7a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h2"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 425 B |
|
@ -1,14 +0,0 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M17 10v1.126c.367.095.714.24 1.032.428l.796-.797 1.415 1.415-.797.796c.188.318.333.665.428 1.032H21v2h-1.126c-.095.367-.24.714-.428 1.032l.797.796-1.415 1.415-.796-.797a3.979 3.979 0 0 1-1.032.428V20h-2v-1.126a3.977 3.977 0 0 1-1.032-.428l-.796.797-1.415-1.415.797-.796A3.975 3.975 0 0 1 12.126 16H11v-2h1.126c.095-.367.24-.714.428-1.032l-.797-.796 1.415-1.415.796.797A3.977 3.977 0 0 1 15 11.126V10h2Zm.406 3.578.016.016c.354.358.574.85.578 1.392v.028a2 2 0 0 1-3.409 1.406l-.01-.012a2 2 0 0 1 2.826-2.83ZM5 8a4 4 0 1 1 7.938.703 7.029 7.029 0 0 0-3.235 3.235A4 4 0 0 1 5 8Zm4.29 5H7a4 4 0 0 0-4 4v1a2 2 0 0 0 2 2h6.101A6.979 6.979 0 0 1 9 15c0-.695.101-1.366.29-2Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 969 B |
|
@ -1,14 +0,0 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24" height="24"
|
||||
fill="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M12 20a7.966 7.966 0 0 1-5.002-1.756l.002.001v-.683c0-1.794 1.492-3.25 3.333-3.25h3.334c1.84 0 3.333 1.456 3.333 3.25v.683A7.966 7.966 0 0 1 12 20ZM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10c0 5.5-4.44 9.963-9.932 10h-.138C6.438 21.962 2 17.5 2 12Zm10-5c-1.84 0-3.333 1.455-3.333 3.25S10.159 13.5 12 13.5c1.84 0 3.333-1.455 3.333-3.25S13.841 7 12 7Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 650 B |
|
@ -1,15 +0,0 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
d="M12 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm-2 9a4 4 0 0 0-4 4v1a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-1a4 4 0 0 0-4-4h-4Z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 413 B |
|
@ -1,53 +0,0 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<h1>H1 Hello World</h1>
|
||||
<h2>H2 Hello World</h2>
|
||||
<h3>H3 Hello World</h3>
|
||||
<h4>H4 Hello World</h4>
|
||||
<h5>H5 Hello World</h5>
|
||||
<h6>H6 Hello World</h6>
|
||||
<p>P Lorem ipsum dolor sit amet, consectetur adipisicing elit.
|
||||
Ad consectetur consequuntur culpa debitis dignissimos
|
||||
dolore est ex illo iure maxime, molestiae pariatur recusandae,
|
||||
reiciendis saepe similique temporibus voluptatum? Eos,
|
||||
repudiandae!
|
||||
</p>
|
||||
<a href="">A Link</a>
|
||||
<button>Button</button>
|
||||
<input type="text">
|
||||
<input type="checkbox" name="" id="">
|
||||
<button id="dropdownButton" data-dropdown-toggle="dropdownMenu" class="shadow" type="button">
|
||||
Select an option
|
||||
</button>
|
||||
<ul id="dropdownMenu" class="hidden border-red-300 shadow">
|
||||
<li>
|
||||
<a href="#" class="block hover:bg-red-500" data-value="1">Option 1</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="block hover:bg-green-500" data-value="2">Option 2</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="block hover:bg-blue-500" data-value="3">Option 3</a>
|
||||
</li>
|
||||
</ul>
|
||||
<script>
|
||||
document.querySelectorAll('#dropdownMenu a').forEach(function (option) {
|
||||
option.addEventListener('click', function (event) {
|
||||
event.preventDefault();
|
||||
console.log(this.dataset.value);
|
||||
document.getElementById('dropdownButton').textContent = this.textContent;
|
||||
console.log('close');
|
||||
document.getElementById('dropdownMenu').classList.add('hidden');
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('dropdownButton').addEventListener('click', function () {
|
||||
let menu = document.getElementById('dropdownMenu');
|
||||
console.log('open', menu);
|
||||
menu.classList.remove('hidden');
|
||||
console.log('open2', menu);
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
|
@ -1,3 +0,0 @@
|
|||
import {initTheme} from '@domain/theme';
|
||||
|
||||
initTheme();
|
|
@ -1,6 +0,0 @@
|
|||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: [
|
||||
"./frontend/**/*.ts",
|
||||
"./frontend/templates/**/*.html.twig",
|
||||
"./node_modules/flowbite/**/*.js"
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
require('flowbite/plugin')
|
||||
],
|
||||
darkMode: 'selector'
|
||||
}
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
<svg
|
||||
class="text-gray-800 dark:text-white {{ class|default('') }}"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xml:space="preserve"
|
Before Width: | Height: | Size: 734 B After Width: | Height: | Size: 664 B |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 798 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 551 B |
Before Width: | Height: | Size: 482 B After Width: | Height: | Size: 482 B |
1
assets/icons/symfony.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 257"><circle cx="128" cy="128.827" r="128" fill="#1a171b"/><path fill="#fff" d="M183.706 48.124c-12.986.453-24.32 7.61-32.757 17.51c-9.342 10.855-15.557 23.73-20.035 36.872c-8.01-6.565-14.19-15.064-27.041-18.77c-9.933-2.852-20.366-1.674-29.96 5.474c-4.545 3.395-7.676 8.527-9.165 13.351c-3.855 12.537 4.053 23.694 7.645 27.7l7.853 8.416c1.619 1.65 5.518 5.955 3.612 12.127c-2.06 6.71-10.15 11.055-18.448 8.495c-3.706-1.13-9.03-3.891-7.838-7.779c.493-1.59 1.631-2.78 2.241-4.155c.56-1.181.827-2.067.997-2.587c1.516-4.95-.555-11.39-5.857-13.025c-4.946-1.516-10.007-.315-11.969 6.054c-2.225 7.235 1.237 20.366 19.783 26.084c21.729 6.676 40.11-5.155 42.717-20.586c1.642-9.665-2.722-16.845-10.717-26.08l-6.514-7.204c-3.946-3.942-5.301-10.661-1.217-15.825c3.446-4.356 8.354-6.215 16.392-4.029c11.733 3.186 16.963 11.327 25.69 17.893c-3.603 11.819-5.958 23.682-8.09 34.32l-1.299 7.931c-6.238 32.721-11 50.688-23.375 61.003c-2.493 1.773-6.057 4.427-11.429 4.612c-2.816.087-3.726-1.85-3.765-2.694c-.067-1.977 1.599-2.883 2.706-3.773c1.654-.902 4.155-2.398 3.985-7.191c-.18-5.664-4.872-10.575-11.654-10.35c-5.08.173-12.823 4.954-12.532 13.705c.303 9.039 8.728 15.813 21.43 15.384c6.79-.233 21.952-2.997 36.895-20.76c17.392-20.362 22.256-43.705 25.915-60.79l4.084-22.556c2.269.272 4.695.453 7.334.516c21.661.457 32.496-10.763 32.657-18.924c.107-4.939-3.241-9.799-7.928-9.689c-3.355.095-7.57 2.328-8.582 6.968c-.988 4.552 6.893 8.66.733 12.65c-4.376 2.832-12.221 4.828-23.269 3.206l2.009-11.103c4.1-21.055 9.157-46.954 28.341-47.584c1.398-.071 6.514.063 6.633 3.446c.035 1.13-.245 1.418-1.568 4.005c-1.347 2.017-1.855 3.734-1.792 5.707c.185 5.376 4.273 8.909 10.185 8.696c7.916-.256 10.193-7.963 10.063-11.921c-.32-9.3-10.122-15.175-23.1-14.75"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
use App\Kernel;
|
||||
use App\Framework\Kernel;
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||
|
||||
if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) {
|
1
bin/just/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.cache/
|
|
@ -9,5 +9,5 @@ check() {
|
|||
}
|
||||
|
||||
check_cmd() {
|
||||
check "$(command -v $1 >/dev/null 2>&1)" $2
|
||||
check "$(command -v $1 >/dev/null 2>&1)" "$2"
|
||||
}
|
|
@ -9,9 +9,9 @@ function preview() {
|
|||
if [[ -z "$recipe" ]] || echo $recipe | grep -q "^\["; then
|
||||
printf "${RED_FG}Select this to Exit${CLEAR}"
|
||||
elif [[ "$content" == *" ..." ]]; then
|
||||
just_wrapper --list $recipe | highlight --out-format xterm256 --syntax conf
|
||||
hash_highlight "$(just_wrapper --list $recipe)" "conf"
|
||||
else
|
||||
just_wrapper --show $recipe | highlight --out-format xterm256 --syntax sh
|
||||
hash_highlight "$(just_wrapper --show $recipe)" "sh"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,19 @@ function choose_truncate() {
|
|||
function choose_list() {
|
||||
just_wrapper -l --no-aliases --list-heading="" | awk '{$1=$1};1'
|
||||
}
|
||||
|
||||
function hash_highlight() {
|
||||
cache_dir="$(dirname ${BASH_SOURCE[0]})/.cache"
|
||||
hash=$(echo $1 | md5sum | cut -d ' ' -f1)
|
||||
file="$cache_dir/$hash"
|
||||
if [[ -e $file ]]; then
|
||||
cat $file
|
||||
else
|
||||
mkdir -p $cache_dir
|
||||
data=$(printf "$1" | highlight --out-format xterm256 --syntax "$2")
|
||||
printf "$data"
|
||||
printf "$data" > $file
|
||||
fi
|
||||
}
|
||||
case "$action" in
|
||||
*choose) choose;;
|
||||
*preview) preview;;
|
|
@ -1,5 +1,3 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
container_name: 'euph-website_mysql'
|
|
@ -23,11 +23,15 @@
|
|||
"symfony/flex": "^2",
|
||||
"symfony/form": "7.1.*",
|
||||
"symfony/framework-bundle": "7.1.*",
|
||||
"symfony/http-client": "7.1.*",
|
||||
"symfony/monolog-bundle": "^3.0",
|
||||
"symfony/runtime": "7.1.*",
|
||||
"symfony/stimulus-bundle": "^2.12",
|
||||
"symfony/stimulus-bundle": "^2.18",
|
||||
"symfony/twig-bundle": "7.1.*",
|
||||
"symfony/uid": "7.1.*",
|
||||
"symfony/ux-icons": "^2.18",
|
||||
"symfony/ux-swup": "^2.18",
|
||||
"symfony/ux-twig-component": "*",
|
||||
"symfony/validator": "7.1.*",
|
||||
"symfony/webpack-encore-bundle": "^2.1",
|
||||
"symfony/yaml": "7.1.*",
|
||||
|
@ -47,13 +51,13 @@
|
|||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"App\\": "backend/"
|
||||
"App\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"App\\Tests\\": "tests/",
|
||||
"DoctrineFixtures\\": "fixtures/"
|
||||
"DoctrineFixtures\\": "src/Framework/Fixtures"
|
||||
}
|
||||
},
|
||||
"replace": {
|
412
app/composer.lock → composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "ee85551bd6012966efcff3c2d44a4b98",
|
||||
"content-hash": "9af65731bd60f6cd005a51b1747d6d92",
|
||||
"packages": [
|
||||
{
|
||||
"name": "dflydev/dot-access-data",
|
||||
|
@ -3675,6 +3675,178 @@
|
|||
],
|
||||
"time": "2024-06-28T08:00:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client",
|
||||
"version": "v7.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client.git",
|
||||
"reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/90ace27d17ccc9afc6f7ec0081e8529fb0e29425",
|
||||
"reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/http-client-contracts": "^3.4.1",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"php-http/discovery": "<1.15",
|
||||
"symfony/http-foundation": "<6.4"
|
||||
},
|
||||
"provide": {
|
||||
"php-http/async-client-implementation": "*",
|
||||
"php-http/client-implementation": "*",
|
||||
"psr/http-client-implementation": "1.0",
|
||||
"symfony/http-client-implementation": "3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"amphp/amp": "^2.5",
|
||||
"amphp/http-client": "^4.2.1",
|
||||
"amphp/http-tunnel": "^1.0",
|
||||
"amphp/socket": "^1.1",
|
||||
"guzzlehttp/promises": "^1.4|^2.0",
|
||||
"nyholm/psr7": "^1.0",
|
||||
"php-http/httplug": "^1.0|^2.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"symfony/dependency-injection": "^6.4|^7.0",
|
||||
"symfony/http-kernel": "^6.4|^7.0",
|
||||
"symfony/messenger": "^6.4|^7.0",
|
||||
"symfony/process": "^6.4|^7.0",
|
||||
"symfony/rate-limiter": "^6.4|^7.0",
|
||||
"symfony/stopwatch": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\HttpClient\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"http"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client/tree/v7.1.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-28T08:00:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client-contracts",
|
||||
"version": "v3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client-contracts.git",
|
||||
"reference": "20414d96f391677bf80078aa55baece78b82647d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d",
|
||||
"reference": "20414d96f391677bf80078aa55baece78b82647d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\HttpClient\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Test/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Generic abstractions related to HTTP clients",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"abstractions",
|
||||
"contracts",
|
||||
"decoupling",
|
||||
"interfaces",
|
||||
"interoperability",
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v7.1.1",
|
||||
|
@ -5786,6 +5958,244 @@
|
|||
],
|
||||
"time": "2024-05-31T14:57:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/ux-icons",
|
||||
"version": "v2.18.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/ux-icons.git",
|
||||
"reference": "a00140b15feb16a0d991ee04e115f2a15b0d9941"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/ux-icons/zipball/a00140b15feb16a0d991ee04e115f2a15b0d9941",
|
||||
"reference": "a00140b15feb16a0d991ee04e115f2a15b0d9941",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"symfony/framework-bundle": "^6.4|^7.0",
|
||||
"symfony/twig-bundle": "^6.4|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/flex": "<1.13"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/asset-mapper": "^6.4|^7.0",
|
||||
"symfony/console": "^6.4|^7.0",
|
||||
"symfony/http-client": "6.4|^7.0",
|
||||
"symfony/phpunit-bridge": "^6.3|^7.0",
|
||||
"symfony/ux-twig-component": "^2.14",
|
||||
"zenstruck/console-test": "^1.5"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"name": "symfony/ux",
|
||||
"url": "https://github.com/symfony/ux"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\UX\\Icons\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kevin Bond",
|
||||
"email": "kevinbond@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Simon André",
|
||||
"email": "smn.andre@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Renders local and remote SVG icons in your Twig templates.",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"icons",
|
||||
"svg",
|
||||
"symfony-ux",
|
||||
"twig"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/ux-icons/tree/v2.18.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-07T23:22:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/ux-swup",
|
||||
"version": "v2.18.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/ux-swup.git",
|
||||
"reference": "208f26399b594613a0eb18dcf6117f67a691a2c4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/ux-swup/zipball/208f26399b594613a0eb18dcf6117f67a691a2c4",
|
||||
"reference": "208f26399b594613a0eb18dcf6117f67a691a2c4",
|
||||
"shasum": ""
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/flex": "<1.13"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"name": "symfony/ux",
|
||||
"url": "https://github.com/symfony/ux"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\UX\\Swup\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Titouan Galopin",
|
||||
"email": "galopintitouan@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Swup integration for Symfony",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"symfony-ux"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/ux-swup/tree/v2.18.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-01T17:50:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/ux-twig-component",
|
||||
"version": "v2.18.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/ux-twig-component.git",
|
||||
"reference": "c5ba36dc0f55b75d4c6d7dc546dfdbe4002f82e7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/c5ba36dc0f55b75d4c6d7dc546dfdbe4002f82e7",
|
||||
"reference": "c5ba36dc0f55b75d4c6d7dc546dfdbe4002f82e7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
|
||||
"symfony/deprecation-contracts": "^2.2|^3.0",
|
||||
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
|
||||
"symfony/property-access": "^5.4|^6.0|^7.0",
|
||||
"twig/twig": "^3.8"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/config": "<5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/console": "^5.4|^6.0|^7.0",
|
||||
"symfony/css-selector": "^5.4|^6.0|^7.0",
|
||||
"symfony/dom-crawler": "^5.4|^6.0|^7.0",
|
||||
"symfony/framework-bundle": "^5.4|^6.0|^7.0",
|
||||
"symfony/phpunit-bridge": "^6.0|^7.0",
|
||||
"symfony/stimulus-bundle": "^2.9.1",
|
||||
"symfony/stopwatch": "^5.4|^6.0|^7.0",
|
||||
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
|
||||
"symfony/webpack-encore-bundle": "^1.15"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"name": "symfony/ux",
|
||||
"url": "https://github.com/symfony/ux"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\UX\\TwigComponent\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Twig components for Symfony",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"components",
|
||||
"symfony-ux",
|
||||
"twig"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/ux-twig-component/tree/v2.18.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-06-11T18:51:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/validator",
|
||||
"version": "v7.1.2",
|
|
@ -16,4 +16,7 @@ return [
|
|||
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
|
||||
Presta\SitemapBundle\PrestaSitemapBundle::class => ['all' => true],
|
||||
Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
|
||||
Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true],
|
||||
Symfony\UX\Icons\UXIconsBundle::class => ['all' => true],
|
||||
Symfony\UX\Swup\SwupBundle::class => ['all' => true],
|
||||
];
|
|
@ -13,7 +13,7 @@ doctrine:
|
|||
App:
|
||||
type: attribute
|
||||
is_bundle: false
|
||||
dir: '%kernel.project_dir%/backend'
|
||||
dir: '%kernel.project_dir%/src'
|
||||
prefix: 'App'
|
||||
alias: App
|
||||
|
|
@ -2,5 +2,5 @@ doctrine_migrations:
|
|||
migrations_paths:
|
||||
# namespace is arbitrary but should be different from App\Migrations
|
||||
# as migrations classes should NOT be autoloaded
|
||||
'DoctrineMigrations': '%kernel.project_dir%/migrations'
|
||||
'DoctrineMigrations': '%kernel.project_dir%/src/Framework/Migrations'
|
||||
enable_profiler: false
|
10
config/packages/twig.yaml
Normal file
|
@ -0,0 +1,10 @@
|
|||
twig:
|
||||
default_path: '%kernel.project_dir%/src'
|
||||
paths:
|
||||
'%kernel.project_dir%/src/Framework': 'framework'
|
||||
'%kernel.project_dir%/src/Site': 'site'
|
||||
'%kernel.project_dir%/src/Component': 'component'
|
||||
|
||||
when@test:
|
||||
twig:
|
||||
strict_variables: true
|
5
config/packages/twig_component.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
twig_component:
|
||||
anonymous_template_directory: 'Component/'
|
||||
defaults:
|
||||
# Namespace & directory for components
|
||||
App\Component\: 'Component/'
|
21
config/packages/vich_uploader.yaml
Normal file
|
@ -0,0 +1,21 @@
|
|||
vich_uploader:
|
||||
db_driver: orm
|
||||
|
||||
metadata:
|
||||
type: attribute
|
||||
|
||||
mappings:
|
||||
job_video-thumbnail:
|
||||
uri_prefix: /assets/videos/jobs/thumbnails
|
||||
upload_destination: '%kernel.project_dir%/public/assets/videos/jobs/thumbnails'
|
||||
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
|
||||
inject_on_load: false
|
||||
delete_on_update: true
|
||||
delete_on_remove: true
|
||||
|
||||
when@test:
|
||||
vich_uploader:
|
||||
mappings:
|
||||
job_video-thumbnail:
|
||||
delete_on_update: false
|
||||
delete_on_remove: false
|
15
config/routes.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
controllers:
|
||||
resource:
|
||||
path: '../src/'
|
||||
namespace: App
|
||||
type: attribute
|
||||
|
||||
presta_sitemap:
|
||||
resource: "@PrestaSitemapBundle/config/routing.yml"
|
||||
|
||||
#when@dev:
|
||||
# test_style:
|
||||
# path: /test/styles
|
||||
# controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
|
||||
# defaults:
|
||||
# template: 'test/styles.html.twig'
|
18
config/services.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||
|
||||
return function(ContainerConfigurator $container): void {
|
||||
$services = $container->services()
|
||||
->defaults()
|
||||
->autowire()
|
||||
->autoconfigure()
|
||||
;
|
||||
|
||||
$services
|
||||
->load('App\\', '%kernel.project_dir%/src/')
|
||||
->exclude('%kernel.project_dir%/src/{DependencyInjection,Entity,Kernel.php}')
|
||||
;
|
||||
};
|
|
@ -11,5 +11,5 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
->autoconfigure()
|
||||
;
|
||||
|
||||
$services->load('DoctrineFixtures\\', '../fixtures');
|
||||
$services->load('DoctrineFixtures\\', '%kernel.project_dir%/src/Framework/Fixtures');
|
||||
};
|
|
@ -11,5 +11,5 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
->autoconfigure()
|
||||
;
|
||||
|
||||
$services->load('DoctrineFixtures\\', '../fixtures');
|
||||
$services->load('DoctrineFixtures\\', '.%kernel.project_dir%/src/Framework/Fixtures');
|
||||
};
|
3705
app/package-lock.json → package-lock.json
generated
|
@ -6,14 +6,10 @@
|
|||
"dev:server": "encore dev-server",
|
||||
"watch": "encore dev --watch",
|
||||
"build": "encore production --progress",
|
||||
"lint:ts": "cd frontend && eslint .",
|
||||
"lint:ts:fix": "cd frontend && eslint . --fix",
|
||||
"lint:scss": "cd frontend/styles && stylelint .",
|
||||
"lint:scss:fix": "cd frontend/styles && stylelint . --fix"
|
||||
},
|
||||
"dependencies": {
|
||||
"easymde": "^2.18.0",
|
||||
"flowbite": "^2.4.1"
|
||||
"lint:ts": "slint src",
|
||||
"lint:ts:fix": "eslint src --fix",
|
||||
"lint:scss": "stylelint src",
|
||||
"lint:scss:fix": "stylelint src --fix"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.3",
|
||||
|
@ -21,7 +17,12 @@
|
|||
"@babel/preset-env": "^7.16.0",
|
||||
"@hotwired/stimulus": "^3.0.0",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@swup/debug-plugin": "^3.0",
|
||||
"@swup/fade-theme": "^1.0",
|
||||
"@swup/forms-plugin": "^2.0",
|
||||
"@swup/slide-theme": "^1.0",
|
||||
"@symfony/stimulus-bridge": "^3.2.0",
|
||||
"@symfony/ux-swup": "file:vendor/symfony/ux-swup/assets",
|
||||
"@symfony/webpack-encore": "^4.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.10.0",
|
||||
"@typescript-eslint/parser": "^6.10.0",
|
||||
|
@ -33,8 +34,6 @@
|
|||
"file-loader": "^6.2.0",
|
||||
"fork-ts-checker-webpack-plugin": "^9.0.0",
|
||||
"ignore-loader": "^0.1.2",
|
||||
"jquery": "^3.7.1",
|
||||
"junit-report-merger": "^6.0.3",
|
||||
"postcss": "^8.4.39",
|
||||
"postcss-loader": "^7.3.4",
|
||||
"prettier": "^2.8.8",
|
||||
|
@ -45,6 +44,7 @@
|
|||
"stylelint-config-standard-scss": "^13.0.0",
|
||||
"stylelint-config-tailwindcss": "^0.0.7",
|
||||
"stylelint-scss": "^6.3.1",
|
||||
"swup": "^3.0",
|
||||
"tailwindcss": "^3.4.4",
|
||||
"ts-loader": "^9.5.0",
|
||||
"tsconfig-paths-webpack-plugin": "^4.1.0",
|
||||
|
@ -58,7 +58,7 @@
|
|||
},
|
||||
"fork-ts-checker": {
|
||||
"typescript": {
|
||||
"configFileName": "./frontend/tsconfig.json"
|
||||
"configFileName": "./tsconfig.json"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
parameters:
|
||||
paths:
|
||||
- backend
|
||||
- src
|
||||
- tests
|
||||
level:
|
||||
max
|