Merge branch 'sportsmanager2' into license_fixes

# Conflicts:
#	src/structure/script.php
This commit is contained in:
Marvin Flock
2025-03-12 17:37:29 +01:00
17 changed files with 1801 additions and 1744 deletions
+21
View File
@@ -11,3 +11,24 @@
[![buddy pipeline](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/218/badge.svg?token=de39e4e4c47351d592b59a5d1e26a41cf5196861f67d4499bbab990600468001 "buddy pipeline")](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/218) [Preview: dtfb.de](https://dtfb.de) [![buddy pipeline](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/218/badge.svg?token=de39e4e4c47351d592b59a5d1e26a41cf5196861f67d4499bbab990600468001 "buddy pipeline")](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/218) [Preview: dtfb.de](https://dtfb.de)
[![buddy pipeline](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/219/badge.svg?token=de39e4e4c47351d592b59a5d1e26a41cf5196861f67d4499bbab990600468001 "buddy pipeline")](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/219) [Preview: kickern-hamburg.de](https://kickern-hamburg.de) [![buddy pipeline](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/219/badge.svg?token=de39e4e4c47351d592b59a5d1e26a41cf5196861f67d4499bbab990600468001 "buddy pipeline")](https://buddy.kicktemp.com/kicktemp/com-sportsmanager/pipelines/pipeline/219) [Preview: kickern-hamburg.de](https://kickern-hamburg.de)
## Test setup
### Installation
To start joomla and the database, run
```shell
docker-compose up -d
```
### Release creation
To create a release execute
```shell
npm run release
```
### Deployment
Deployment can only be done manually right now (sad)
To do this go to
[Testserver Extension Installer Site](http://localhost:8080/administrator/index.php?option=com_installer&view=install)
and upload the zip file found in `./package/packages`
+33 -25
View File
@@ -1,30 +1,38 @@
version: '2'
services: services:
mariadb: joomla:
image: docker.io/bitnami/mariadb:10.3 image: joomla:5.2.4
restart: always
ports:
- '8080:80'
environment:
JOOMLA_DB_HOST: db
JOOMLA_DB_USER: joomla
JOOMLA_DB_PASSWORD: examplepass
JOOMLA_DB_NAME: joomla_db
JOOMLA_SITE_NAME: Sportsmanager Testserver
JOOMLA_ADMIN_USER: Joomla Hero
JOOMLA_ADMIN_USERNAME: joomla
JOOMLA_ADMIN_PASSWORD: joomla@secured
JOOMLA_ADMIN_EMAIL: joomla@example.com
volumes:
- './data/joomla_data:/var/www/html'
networks:
- joomla_network
db:
image: mysql:8.0
restart: always
ports: ports:
- '3306:3306' - '3306:3306'
environment: environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development. MYSQL_DATABASE: joomla_db
- ALLOW_EMPTY_PASSWORD=yes MYSQL_USER: joomla
- MARIADB_USER=bn_joomla MYSQL_PASSWORD: examplepass
- MARIADB_DATABASE=bitnami_joomla MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes: volumes:
- './data/mariadb_data:/bitnami/mariadb' - './data/mysql_data:/var/lib/mysql'
joomla: networks:
image: docker.io/bitnami/joomla:3 - joomla_network
ports:
- '80:8080' networks:
- '443:8443' joomla_network:
environment:
- JOOMLA_DATABASE_HOST=mariadb
- JOOMLA_DATABASE_PORT_NUMBER=3306
- JOOMLA_DATABASE_USER=bn_joomla
- JOOMLA_DATABASE_NAME=bitnami_joomla
# ALLOW_EMPTY_PASSWORD is recommended only for development.
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- './data/joomla_data:/bitnami/joomla'
- './docker/php.ini:/opt/bitnami/php/etc/php.ini:ro'
depends_on:
- mariadb
+24 -16
View File
@@ -56,28 +56,36 @@ export const config = {
}, },
packagefiles: [ packagefiles: [
{ {
src: './releasefiles/components/com_kickboilerplate/**/**', src: './releasefiles/components/com_sportsmanager/**/**',
dest: 'sourcefiles/com_kickboilerplate/site' dest: 'sourcefiles/com_sportsmanager/site'
}, },
{ {
src: './releasefiles/administrator/components/com_kickboilerplate/**/**', src: './releasefiles/language/**/**',
dest: 'sourcefiles/com_kickboilerplate/admin' dest: 'sourcefiles/com_sportsmanager/site/language'
}, },
{ {
src: './releasefiles/administrator/components/com_kickboilerplate/kickboilerplate.xml', src: './releasefiles/administrator/components/com_sportsmanager/**/**',
dest: 'sourcefiles/com_kickboilerplate/' dest: 'sourcefiles/com_sportsmanager/admin'
}, },
{ {
src: './releasefiles/administrator/components/com_kickboilerplate/script.php', src: './releasefiles/administrator/language/**/**',
dest: 'sourcefiles/com_kickboilerplate/' dest: 'sourcefiles/com_sportsmanager/admin/language'
}, },
{ {
src: './releasefiles/media/com_kickboilerplate/**/**', src: './releasefiles/sportsmanager.xml',
dest: 'sourcefiles/com_kickboilerplate/media' dest: 'sourcefiles/com_sportsmanager/'
}, },
{ {
src: './releasefiles/plugins/system/kickboilerplate/**/**', src: './releasefiles/script.php',
dest: 'sourcefiles/plg_system_kickboilerplate' dest: 'sourcefiles/com_sportsmanager/'
},
{
src: './releasefiles/media/com_sportsmanager/**/**',
dest: 'sourcefiles/com_sportsmanager/media'
},
{
src: './releasefiles/plugins/system/kickyootheme/**/**',
dest: 'sourcefiles/plg_system_kickyootheme'
} }
], ],
package: [ package: [
@@ -100,7 +108,7 @@ export const config = {
archiver: [ archiver: [
{ {
destination : 'package/packages/', destination : 'package/packages/',
name: 'plg_system_kickboilerplate', name: 'plg_system_kickyootheme',
suffixversion: false, suffixversion: false,
types: [ types: [
{ {
@@ -112,14 +120,14 @@ export const config = {
} }
], ],
folders: [ folders: [
'sourcefiles/plg_system_kickboilerplate' 'sourcefiles/plg_system_kickyootheme'
], ],
files: [ files: [
] ]
}, },
{ {
destination : 'package/packages/', destination : 'package/packages/',
name: 'com_kickboilerplate', name: 'com_sportsmanager',
suffixversion: false, suffixversion: false,
types: [ types: [
{ {
@@ -131,7 +139,7 @@ export const config = {
} }
], ],
folders: [ folders: [
'sourcefiles/com_kickboilerplate' 'sourcefiles/com_sportsmanager'
], ],
files: [ files: [
] ]
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -0,0 +1,59 @@
<?php
function bildKopierenAngepasst($quelle, $ziel, $ziel_breite, $ziel_hoehe, $zuschneiden)
{
$len = strlen($ziel);
if ($len < 4 || $ziel[$len - 4] != ".")
return false;
$ext = strtolower(substr($ziel, $len - 3));
if ($ext != "jpg" && $ext != "png")
return false;
$quelle_image = $ext == "png" ? imagecreatefrompng($quelle) : imagecreatefromjpeg($quelle);
if ($quelle_image === false)
return false;
$quelle_breite = imagesx($quelle_image);
$quelle_hoehe = imagesy($quelle_image);
if ($quelle_breite == $ziel_breite && $quelle_hoehe == $ziel_hoehe)
return JFile::copy($quelle, $ziel);
$ziel_image = imagecreatetruecolor($ziel_breite, $ziel_hoehe);
$hintergrund = $ext == "png" ? imagecolorallocatealpha($ziel_image, 0, 0, 0, 127) : imagecolorallocate($ziel_image, 64, 64, 64);
imagefill($ziel_image, 0, 0, $hintergrund);
$quelle_proportionen = $quelle_breite / $quelle_hoehe;
$ziel_proportionen = $ziel_breite / $ziel_hoehe;
if ($zuschneiden) {
if ($ziel_proportionen >= $quelle_proportionen) {
$quelle_teilhoehe = round($quelle_breite / $ziel_proportionen);
if (!imagecopyresampled($ziel_image, $quelle_image, 0, 0, 0, round(($quelle_hoehe - $quelle_teilhoehe) / 2), $ziel_breite, $ziel_hoehe, $quelle_breite, $quelle_teilhoehe))
return false;
} else {
$quelle_teilbreite = round($quelle_hoehe * $ziel_proportionen);
if (!imagecopyresampled($ziel_image, $quelle_image, 0, 0, round(($quelle_breite - $quelle_teilbreite) / 2), 0, $ziel_breite, $ziel_hoehe, $quelle_teilbreite, $quelle_hoehe))
return false;
}
} else {
if ($ziel_proportionen >= $quelle_proportionen) {
$ziel_teilbreite = round($ziel_hoehe * $quelle_proportionen);
if (!imagecopyresampled($ziel_image, $quelle_image, round(($ziel_breite - $ziel_teilbreite) / 2), 0, 0, 0, $ziel_teilbreite, $ziel_hoehe, $quelle_breite, $quelle_hoehe))
return false;
} else {
$ziel_teilhoehe = round($ziel_breite / $quelle_proportionen);
if (!imagecopyresampled($ziel_image, $quelle_image, 0, round(($ziel_hoehe - $ziel_teilhoehe) / 2), 0, 0, $ziel_breite, $ziel_teilhoehe, $quelle_breite, $quelle_hoehe))
return false;
}
}
ob_start();
if ($ext == "png") {
imagesavealpha($ziel_image, true);
if (!imagepng($ziel_image))
return false;
} else {
if (!imagejpeg($ziel_image))
return false;
}
$output = ob_get_contents();
ob_end_clean();
JFile::write($ziel, $output);
return true;
}
@@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,5 +0,0 @@
[.ShellClassInfo]
InfoTip=Dieser Ordner wird online freigegeben.
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
@@ -1,58 +1,58 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd"> <extension type="component" version="5.0" method="upgrade">
<extension type="component" version="3.0" method="upgrade"> <name>Sports manager</name>
<name>Sports manager</name> <creationDate>2025-03-12</creationDate>
<creationDate>2020-09-30</creationDate> <author>Deutscher Tischfußball Verband</author>
<author>Sven Nickel</author> <authorEmail>it@dtfb.de</authorEmail>
<authorEmail>sven.nickel@gmail.com</authorEmail> <copyright>All rights reserved</copyright>
<copyright>All rights reserved</copyright> <license>GNU/GPL</license>
<license>GNU/GPL</license> <version>2.0.0</version>
<version>1.7.1</version> <description>Verwaltung von Spielern und Vereinen in Mannschafts- und Individualwettbewerben</description>
<description>Verwaltung von Spielern und Vereinen in Mannschafts- und Individualwettbewerben</description> <files folder="site">
<files folder="site"> <filename>index.html</filename>
<filename>index.html</filename> <filename>admin.php</filename>
<filename>admin.php</filename> <filename>api.php</filename>
<filename>api.php</filename> <filename>controller.php</filename>
<filename>controller.php</filename> <filename>database.php</filename>
<filename>database.php</filename> <filename>sportsmanager.php</filename>
<filename>sportsmanager.php</filename> <filename>mathparser.php</filename>
<filename>mathparser.php</filename> <filename>tools.php</filename>
<filename>tools.php</filename> <filename>js/jquery.min.js</filename>
<filename>js/jquery.min.js</filename> <folder>images</folder>
<folder>images</folder> <folder>models</folder>
<folder>models</folder> <folder>util</folder>
<folder>views</folder> <folder>views</folder>
</files> </files>
<languages folder="site"> <languages folder="site">
<language tag="en-GB">language/en-GB/en-GB.com_sportsmanager.ini <language tag="en-GB">language/en-GB/en-GB.com_sportsmanager.ini
</language> </language>
<language tag="de-DE">language/de-DE/de-DE.com_sportsmanager.ini <language tag="de-DE">language/de-DE/de-DE.com_sportsmanager.ini
</language> </language>
<language tag="nl-NL">language/nl-NL/nl-NL.com_sportsmanager.ini <language tag="nl-NL">language/nl-NL/nl-NL.com_sportsmanager.ini
</language> </language>
</languages> </languages>
<scriptfile>install.php</scriptfile> <scriptfile>script.php</scriptfile>
<administration> <administration>
<files folder="admin"> <files folder="admin">
<filename>access.xml</filename> <filename>access.xml</filename>
<filename>sportsmanager.php</filename> <filename>sportsmanager.php</filename>
<filename>controller.php</filename> <filename>controller.php</filename>
<filename>index.html</filename> <filename>index.html</filename>
<folder>views</folder> <folder>views</folder>
</files> </files>
<languages folder="admin"> <languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_sportsmanager.ini <language tag="en-GB">language/en-GB/en-GB.com_sportsmanager.ini
</language> </language>
<language tag="en-GB">language/en-GB/en-GB.com_sportsmanager.sys.ini <language tag="en-GB">language/en-GB/en-GB.com_sportsmanager.sys.ini
</language> </language>
<language tag="de-DE">language/de-DE/de-DE.com_sportsmanager.ini <language tag="de-DE">language/de-DE/de-DE.com_sportsmanager.ini
</language> </language>
<language tag="de-DE">language/de-DE/de-DE.com_sportsmanager.sys.ini <language tag="de-DE">language/de-DE/de-DE.com_sportsmanager.sys.ini
</language> </language>
<language tag="nl-NL">language/nl-NL/nl-NL.com_sportsmanager.ini <language tag="nl-NL">language/nl-NL/nl-NL.com_sportsmanager.ini
</language> </language>
<language tag="nl-NL">language/nl-NL/nl-NL.com_sportsmanager.sys.ini <language tag="nl-NL">language/nl-NL/nl-NL.com_sportsmanager.sys.ini
</language> </language>
</languages> </languages>
</administration> </administration>
</extension> </extension>