Compare commits

...
Author SHA1 Message Date
svennickel 5aee02830d Merge pull request #305 from Deutscher-Tischfussballbund/sportsmanager2-issue289
Zusatzinfo-Feld für Spielorte
2026-09-06 21:16:49 +02:00
Jürgen MeyerandClaude Sonnet 5 cb2e614604 Zusatzinfo-Feld für Spielort im Admin-Formular ergänzt und Frontend-Anzeige der Heimspielstätte um Weitere Infos, Ruhetag und Training erweitert.
Adresse der Heimspielstätte verlinkt jetzt zusätzlich auf Google Maps.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 17:50:42 +02:00
svennickel 5d126b0d28 Merge pull request #303 from Deutscher-Tischfussballbund/sportsmanager2-issue300
Überarbeitung Hall of Fame
2026-09-04 23:24:10 +02:00
Jürgen Meyer 69cf0e46ab Datenbankvorbereitung für issue 289 2026-09-04 11:34:07 +02:00
Jürgen Meyer df794966df Hall of Fame: Jahres-/Id-Filter korrigiert, inaktive Vereine bei Namens-Links berücksichtigt
- halloffame_id: Bereichssuche (z.B. "1-5") ist nicht mehr möglich, nur noch einzelne Werte.
- jahr: Bereichs- und Einzelwerte werden auf 1900..aktuelles Jahr+5 begrenzt; liegt bei einem Bereich der 2. Wert unter dem 1., werden die Werte vertauscht statt den Bereich zu verwerfen.
- halloffameNameLink verlinkt bei Vereinen jetzt nur noch, wenn der Verein nicht ausgetreten ist (analog zur bestehenden Spieler-Aktiv-Prüfung).
2026-09-04 08:35:27 +02:00
Jürgen MeyerandClaude Sonnet 5 12da0a9c00 Überarbeitung Hall of Fame
## Neue Frontend-Darstellungen (gruppierung)
- gruppierung=jahr - Jahresrückblick: eine Tabelle je Jahr mit allen Disziplinen, inkl. mehrerer Plätze, Team-Mitspielern und Spalten-/Zeilen-Layout wie auf der Detailseite.
- gruppierung=summe - Ranking über alle Disziplinen hinweg: ein Eintrag je Spieler/Team mit mindestens einem 1. Platz, inkl. Titelanzahl und Auflistung aller Titel (Disziplin, Jahre).
- gruppierung=summedisziplin - wie summe, aber eine eigene Rangliste je Disziplin.

## Neue/erweiterte Steuerungsparameter
- platzierung (inspalten/inzeilen), plaetzezeigen, sortierung (kontextabhängig: Jahresreihenfolge oder anzahl/name in den Summen-Ansichten).
- anzahltitel - Mindestanzahl an Titeln für die Summen-Ansichten.
- halloffame_id und jahr als Filter für alle Hall-of-Fame-Seiten, mit Komma- und Bereichs-Syntax (2006-2010,2015).
- Titel fällt auf den Joomla-Menütitel zurück, wenn kein eigener Titel im Menüpunkt gesetzt ist.
- Überschrift semantisch als h1 statt div.

## Mannschaftsspieler-Feld
- Neues Datenbankfeld teamspieler (TEXT) an #__sportsmanager_mitglied_von_halloffame, Eingabe im Backend als Textarea (nur bei Mannschaftsdisziplinen).
- Anzeige im Frontend bei platzierung=inzeilen oder wenn nur ein Platz gezeigt wird, sofern mindestens ein Eintrag >= 3 Zeichen vorhanden ist.

## Verlinkung & Bilder
- Spieler-, Vereins- und Mannschaftsnamen sind jetzt überall anklickbar (Detailseite, Jahresübersicht, Summen-Ansichten) und führen zur jeweiligen Profilseite - inaktive Spieler (ohne aktuellen Verein) bleiben unverlinkt.
- Dummybilder: neues geschlechtsneutrales Bild (spieler-n.png) für Spieler ohne Datenbank-ID; deren Geschlecht wird zusätzlich anhand der übrigen Spieler mit ID derselben Disziplin geschätzt, bevor auf das neutrale Bild zurückgefallen wird.
- Fehlt der Name zu einer Platzierung, wird in der Spaltenansicht nur das Bild weggelassen, in der Zeilenansicht die komplette Zeile.

## Neues Feld "nicht_ausgespielt"
- Neue Spalte nicht_ausgespielt (BOOL) hinter jahr an #__sportsmanager_mitglied_von_halloffame (Teil von Datenbank-Version 121).
- Admin-Formular: Checkbox neben dem Jahr-Feld; bei Aktivierung werden alle anderen Felder deaktiviert, beim Speichern werden Platz 2/3 gelöscht und Platz 1 auf reines nicht_ausgespielt=1 ohne Team-/Spielerdaten gesetzt.
- Frontend-Detailseite und Backend-Jahresliste zeigen bei solchen Einträgen "Nicht ausgespielt" statt Team-/Spielername an.
- Jahresübersicht und beide Summen-Ansichten überspringen solche Einträge vollständig.

## Vereins-Dropdown im Backend gruppiert
- Die Vereinsliste im Auswahlfeld (Plätze 1-3) ist jetzt in zwei optgroup-Blöcke aufgeteilt: "Aktive Vereine" / "Inaktive Vereine" (neue Sprachkonstanten COM_SPORTSMANAGER_ACTIVE_CLUBS / COM_SPORTSMANAGER_INACTIVE_CLUBS). Innerhalb jeder Gruppe bleibt die alphabetische Sortierung erhalten.

## Routing-Fix
- task=team_details und task=verein_details funktionierten nur, wenn der aktuelle Menüpunkt bereits auf content=teams bzw. content=vereine stand (z. B. beim Verlinken von der Hall-of-Fame-Seite aus nicht). Beide Tasks laufen jetzt wie spieler_details über eine content-unabhängige Route.

## Performance
- Options-Liste für Vereins-/Spieler-Dropdowns im Backend-Formular wurde bis zu 6x komplett neu gerendert (3 Plätze x 2 Spieler bzw. 3x Vereinsliste). Jetzt wird sie nur noch 1x aufgebaut, in einem <template>-Element abgelegt und per JavaScript in die <select>-Felder befüllt.
- Team-ID-Auflösung für Mannschaften ohne Vereinszuordnung läuft jetzt über eine einmalig geladene Liste statt einer Datenbankabfrage pro Zeile.

## Bugfixes
- halloffameTeamIdFuerTeamname() erwartete einen nicht-nullbaren string und stürzte bei nicht_ausgespielt-Einträgen (teamname = NULL) mit einem TypeError ab. Parameter ist jetzt nullable, leerer/NULL-Teamname liefert direkt null zurück.
- Bei Einzel-Disziplinen wurden Jahre in den Summen-Ansichten doppelt gezählt, wenn in der Datenbank (z. B. aus Altdaten) noch ein spieler2_id hinterlegt war; wird jetzt nur noch bei echten Doppel-Disziplinen berücksichtigt.

## Migration
- Datenbank-Version 121: neues Feld teamspieler, neue Spalte nicht_ausgespielt, Bereitstellung des neutralen Dummybilds für Bestandsinstallationen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-02 11:33:38 +02:00
svennickel ca827a049f Merge pull request #302 from Deutscher-Tischfussballbund/sportsmanager2-issue301
Export von kompletten Ligen im json-Format
2026-08-30 15:16:26 +02:00
svennickel 70fb4d97b7 Merge pull request #299 from Deutscher-Tischfussballbund/sportsmanager2-issue298
Zusätzliche Link-Parameter für Menüeinträge "Allgemeine Inhalte"
2026-08-30 13:43:04 +02:00
Jürgen Meyer d39dc45cec Änderungsvorschläge abgearbeitet. 2026-08-30 11:57:17 +02:00
Jürgen Meyer c290986bac Änderung wie Vorgeschlagen übernommen. 2026-08-30 10:15:48 +02:00
Jürgen Meyer 9541bc0652 Export von kompletten Ligen im json-Format 2026-08-28 15:52:39 +02:00
jmeyer26 50e6872214 Merge pull request #288 from Deutscher-Tischfussballbund/claude/season-selection-url-persist-6yz518
Persist season selection in URL instead of cookie-only
2026-08-28 12:33:47 +02:00
Jürgen Meyer a953ebf130 Zusätzliche Link-Parameter für Menüeinträge "Allgemeine Inhalte" 2026-08-27 15:03:45 +02:00
MarvinF e8051bbcf6 Merge pull request #297 from Deutscher-Tischfussballbund/sportsmanager2-issue296
Mail sending silently fails
2026-08-25 22:51:32 +02:00
Jürgen Meyer a01efae2e9 Exception Fehler bei E-Mail Versand 2026-08-25 20:05:50 +02:00
MarvinF 04e4ea6cdf Merge pull request #295 from Deutscher-Tischfussballbund/294-fix-string-comparison-spielpunkte-bedingung
Match report: goals compared as strings – winner swapped for two-digit results
2026-08-25 12:40:01 +02:00
svennickel f787681fec fix: compare goals numerically in spielpunkte_bedingung()
Refs #294
2026-08-24 23:10:16 +02:00
MarvinF 541af8fb7f Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-07-16 23:16:50 +02:00
MarvinF cc92b938be Merge pull request #291 from Deutscher-Tischfussballbund/sportsmanager2-issue290
Bei Teilnehmerzahl 1 oder weniger eines Ranglistenturnieres werden oh…
2026-07-16 23:14:36 +02:00
Jürgen Meyer 4c21d66fbe Bei Teilnehmerzahl 1 oder weniger eines Ranglistenturnieres werden ohne weitere Berechnung 0 Punkte vergeben. 2026-07-16 14:27:34 +02:00
MarvinF afb89dba6e Rename dev_preview to dev_preview.yml 2026-06-16 21:07:55 +02:00
MarvinF c4d599834a Create dev_preview 2026-06-16 21:06:47 +02:00
Claude dcea759ab2 Persist season selection in URL instead of cookie-only
Season filter dropdowns in all frontend views (Mannschaftswettbewerbe,
Turniere, Teams, Spielerstatistiken, Individualwettbewerbe, Ranglisten)
now navigate via JS URL update (window.location with searchParams) instead
of submitting a POST form. This puts filter_saison_id in the URL, making
season-filtered views bookmarkable and shareable.

The PHP backend already reads filter_saison_id from $_REQUEST (covers GET),
and the cookie is still set as fallback for links that don't carry the param.

For veranstaltungHeaderAlone (single competition detail view), the JS also
resets task=veranstaltungen and removes veranstaltungid on season change,
matching the previous form-based behaviour of navigating back to the list.

https://claude.ai/code/session_01VyKCAgyEfixxR6RhAkBSEL
2026-06-13 08:31:37 +00:00
MarvinF 19037d0729 Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2026-05-13 00:06:44 +02:00
MarvinF bfc65d6030 Merge pull request #284 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2026-05-13 00:05:08 +02:00
MarvinF 2a307b0987 Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-05-13 00:03:28 +02:00
MarvinF e8e6f7046d Merge pull request #283 from Deutscher-Tischfussballbund/sportsmanager2-issue282
add club mailing functionality to admin area
2026-05-13 00:02:35 +02:00
Marvin Flock 20ab5a44a9 fix: add table headers 2026-05-13 00:00:34 +02:00
Jürgen Meyer a5357e4a51 mailto Funktion bei Mannschaften in admin-Bereich Veranstaltung 2026-04-28 11:46:22 +02:00
Jürgen Meyer 68e16a3adb mailto Funktion bei Vereine in admin-Bereich 2026-04-28 09:45:29 +02:00
MarvinF 7d47b3ed24 Merge pull request #281 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2026-04-14 19:10:16 +02:00
MarvinF cfc821f8ff Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2026-04-14 19:09:46 +02:00
MarvinF 582829331c Merge pull request #280 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2026-04-14 19:08:39 +02:00
MarvinF d8ccd08843 Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-04-14 19:08:15 +02:00
MarvinF 57e92da771 Merge pull request #279 from Deutscher-Tischfussballbund/sportsmanager2-issue274-neu
Enhancing Playerstatistics (Performance Index, Club Membership and more)
2026-04-14 19:06:45 +02:00
Marvin Flock 7f85888a26 fix: add table fix 2026-04-14 19:02:38 +02:00
Marvin Flock 13ad52f221 fix: add small fixes 2026-04-14 18:50:05 +02:00
Jürgen Meyer a44564a40e Anzeige naegative Satzpunkte in Ligatabelle 2026-04-09 11:11:37 +02:00
Jürgen Meyer ee4e817ad4 Aktualisierung Spielerstatistiken 2026-04-06 08:10:55 +02:00
jmeyer26 8a7ff6c234 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue274-neu 2026-04-06 07:41:01 +02:00
Jürgen Meyer 8fb4ed1cdd Filter Mannschaften in Spielerstatistik 2026-04-06 07:33:33 +02:00
Jürgen Meyer a2243d9ccf Teams und Filter Spiele in Wertung hinzugefügt. 2026-04-06 05:53:13 +02:00
MarvinF 308fbae4e5 Merge pull request #277 from Deutscher-Tischfussballbund/sportsmanager2-issue275
Display Teamlogo in Hall of Fame
2026-04-05 19:10:55 +02:00
MarvinF d6d2a04ceb Merge branch 'sportsmanager2-dev' into sportsmanager2-issue275 2026-04-05 19:10:32 +02:00
MarvinF d7d6751b70 Merge pull request #278 from Deutscher-Tischfussballbund/sportsmanager2-issue276
Optimization of direct comparison
2026-04-05 19:07:34 +02:00
Jürgen Meyer b112b4dc31 Effizienzindex und Punkteschnitt zu Spielerstatistoken hinzugefügt. 2026-04-04 12:42:07 +02:00
jmeyer26 ac416c1822 Fehler Vergleich Satzpunkte korrigiert 2026-04-03 07:37:32 +02:00
Jürgen Meyer c92774b27d Spielerstatistik Race Permormance Index hinzugefügt 2026-04-02 18:48:43 +02:00
Jürgen Meyer b33a7e6a25 Unnötige Variablen gelöscht 2026-04-02 11:59:39 +02:00
Jürgen Meyer f86815dae5 Auswahl Direkter Vergleich nach Punkte, Satzpunkte, Tore 2026-04-02 11:56:51 +02:00
Jürgen Meyer 43a03bbb09 Hall of Fame - Zuordnung Mannschaftswappen über Teamname 2026-04-01 15:51:23 +02:00
MarvinF f430c7d35d Merge pull request #273 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2026-03-24 17:17:57 +01:00
MarvinF 73c352f6cf Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2026-03-24 17:16:00 +01:00
MarvinF c8c19ef8e0 Merge pull request #272 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2026-03-24 17:13:22 +01:00
MarvinF cb0db3833c Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-03-24 17:12:24 +01:00
MarvinF 29e7ea7ffa Merge pull request #271 from Deutscher-Tischfussballbund/fix/common-update
fix: refactor the update php to allow different databases
2026-03-24 17:10:46 +01:00
MarvinF 426a582844 Merge pull request #270 from Deutscher-Tischfussballbund/sportsmanager2-issue269
Fixes for Direct Compare, Player Statistics, Home field right
2026-03-24 02:12:16 +01:00
Marvin Flock c1763536c9 fix: refactor the update php to allow different databases 2026-03-24 01:38:18 +01:00
Jürgen Meyer 507861fd56 Neuberechung Quote in Spielerstatistik 2026-03-23 13:33:45 +01:00
Jürgen Meyer 168ad7dab4 Terminänderung funktionierte nicht mehr bei Tausch Heimrecht. 2026-03-23 12:08:11 +01:00
Jürgen Meyer c8483b077e Weiter Optimierung 2026-03-17 13:08:02 +01:00
Jürgen Meyer c23ed24962 Kleine Optimierung 2026-03-17 13:05:59 +01:00
Jürgen Meyer f70048f90f Fehlerkorrektur Direkter Vergleich 2026-03-17 12:47:43 +01:00
MarvinF 572ccee6fd Merge pull request #267 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2026-03-10 00:13:41 +01:00
MarvinF fa03965b17 Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2026-03-10 00:13:14 +01:00
MarvinF 0376b46470 Merge pull request #266 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2026-03-10 00:11:00 +01:00
MarvinF c8f419e00a Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-03-10 00:10:35 +01:00
MarvinF 116e4929b2 Merge pull request #265 from Deutscher-Tischfussballbund/sportsmanager2-issue261-issue262
Optimizations for Hall of fame, gameplans, associations, game postponement and more
2026-03-10 00:09:13 +01:00
MarvinF aed4d19c47 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue261-issue262 2026-03-10 00:08:54 +01:00
Jürgen Meyer 2faa38e2b8 Hilfsausgabe gelöscht 2026-03-09 07:44:59 +01:00
Jürgen Meyer dc0fcea945 Beanstandung Copilot abgearbeitet 5 2026-03-09 07:43:20 +01:00
Jürgen Meyer e139ac4fc2 Beanstandung Copilot abgearbeitet 4 2026-03-08 23:59:38 +01:00
jmeyer26andCopilot 5919994a3e Update src/structure/components/com_sportsmanager/admin.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 23:02:02 +01:00
jmeyer26andCopilot eccecedf95 Update src/structure/language/de-DE/de-DE.com_sportsmanager.ini
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 22:58:31 +01:00
Jürgen Meyer 9ed58f2916 Beanstandung Copilot abgearbeitet 2 2026-03-08 22:43:05 +01:00
Jürgen Meyer 1a9188c07b Beanstandung Copilot abgearbeitet 1 2026-03-08 21:46:09 +01:00
Jürgen Meyer 9435515088 Beim Löschen von Spieler bzw. Vereine werden die entsprechenden ids in Hall of Fame und Verbandsorgane gelöscht 2026-03-08 20:43:10 +01:00
Jürgen Meyer 4ada3a3b77 Bemerkungen angepasst 2026-03-08 12:23:39 +01:00
Jürgen Meyer 8391bf9df1 Automatische Spielberichtskorrektur bei doppelter Spielnummer 2026-03-08 12:19:10 +01:00
Jürgen Meyer bac4c0ada4 Funktion Spielbericht löschen hinzugefügt. 2026-03-08 09:23:27 +01:00
Jürgen Meyer eed02e396d Evtl. vorhandene Ordnungsstrafen werden beim Löschen eines Spieles mitgelöscht. 2026-03-06 20:16:54 +01:00
Jürgen Meyer 40be14ad75 Heimrechttausch: Sicherheitsabfrage und speichern in Historie 2026-03-06 15:10:01 +01:00
Jürgen Meyer 54965f9ef2 Scrollbalken bei Ordnungsstrafen, Verbandsorgane und Hall of Fame 2026-03-06 10:43:46 +01:00
15 changed files with 3236 additions and 794 deletions
+84
View File
@@ -0,0 +1,84 @@
# Builds the codebase and publishes a rolling dev-preview release (no version bump).
# The release uses a fixed tag "dev-preview" so each run replaces the previous one.
name: Sportsmanager Dev Preview
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to build'
required: true
default: 'sportsmanager2-prod'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install npm dependencies
run: npm ci
- name: Run build script
run: npm run release
- name: Delete existing dev-preview release (if any)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
run: |
release_id=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO/releases/tags/dev-preview" \
| jq -r '.id // empty')
if [ -n "$release_id" ]; then
curl -s -X DELETE -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO/releases/$release_id"
echo "Deleted existing dev-preview release (ID: $release_id)"
else
echo "No existing dev-preview release found"
fi
- name: Delete existing dev-preview tag (if any)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
run: |
status=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO/git/refs/tags/dev-preview")
if [ "$status" = "200" ]; then
curl -s -X DELETE -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO/git/refs/tags/dev-preview"
echo "Deleted existing dev-preview tag"
else
echo "No existing dev-preview tag found"
fi
- name: Publish dev-preview release
uses: softprops/action-gh-release@v2
with:
tag_name: dev-preview
name: "Dev Preview (${{ github.run_number }})"
body: |
Automated dev preview build from branch `${{ inputs.branch }}`.
Commit: ${{ github.sha }}
Run: ${{ github.run_number }}
> This is a temporary preview release and will be replaced on the next run.
files: package/packages/com_sportsmanager.zip
draft: false
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+19 -5
View File
@@ -52,7 +52,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.0.tgz",
"integrity": "sha512-iV7Gwg0DePKvdDZZWRTkj4MW+6/AbVWd4ZCg+zk8H1RVt5xBpUZS6vLQWwb3pyLg4BFTaGiQCPoJ4Ibmbne4fA==",
"dev": true,
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.10.4",
"@babel/generator": "^7.12.0",
@@ -2695,10 +2694,25 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001148",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz",
"integrity": "sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw==",
"dev": true
"version": "1.0.30001810",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz",
"integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "CC-BY-4.0"
},
"node_modules/chalk": {
"version": "1.1.3",
@@ -30,6 +30,8 @@ COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_DESCRIPTION="Beschreibung"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_DESCRIPTION_DESC="Beschreibung, die unterhalb des Titels angezeigt wird (WICHTIG: Werden HTML-Tags verwendet, müssen auch Umlaute in HTML-Code angeben werden)"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_CATEGORIES="Kategorien"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_CATEGORIES_DESC="Eine optionale Auswahl von Kategorienummern durch Kommata oder Spiegelstrich getrennt"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_EXTRA_PARAMS="Zusätzliche Parameter"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_EXTRA_PARAMS_DESC="Optionale zusätzliche Parameter für den Link in der Form Name1=Wert1&Name2=Wert2, die bei Aufruf dieses Menüpunkts wie GET-Parameter zur Verfügung stehen"
COM_SPORTSMANAGER_LAYOUT_ELO_RANKING_TITLE="Layout: Elo-Rangliste"
COM_SPORTSMANAGER_LAYOUT_ELO_RANKING_DESC="Auflistung der Spieler sortiert nach Elo-Wertung"
COM_SPORTSMANAGER_LAYOUT_ELO_RANKING_OPTION_ELO_RANKING="Elo-Rangliste"
@@ -30,6 +30,8 @@ COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_DESCRIPTION="Description"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_DESCRIPTION_DESC="Description that will be shows below the titel (IMPORTANT: if html tags are used, special characters must be maskeraded)"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_CATEGORIES="Categories"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_CATEGORIES_DESC="An optional selection of category numbers seperated by commas or bullet point"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_EXTRA_PARAMS="Additional parameters"
COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_EXTRA_PARAMS_DESC="Optional additional parameters for the link in the form name1=value1&name2=value2, made available as GET parameters whenever this menu item is called"
COM_SPORTSMANAGER_LAYOUT_ELO_RANKING_TITLE="Layout: elo ranking"
COM_SPORTSMANAGER_LAYOUT_ELO_RANKING_DESC="Listing of players sorted by elo rating"
COM_SPORTSMANAGER_LAYOUT_ELO_RANKING_OPTION_ELO_RANKING="Elo ranking"
File diff suppressed because it is too large Load Diff
@@ -5503,10 +5503,12 @@ function updateDatabase(): void
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
$query = "ALTER TABLE `#__sportsmanager_veranstaltung` ADD COLUMN IF NOT EXISTS `regelwerke_id` INT(11) NOT NULL DEFAULT '0' AFTER `bezeichnung`;";
$columns = $db->getTableColumns('#__sportsmanager_veranstaltung');
if (!array_key_exists('regelwerke_id', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_veranstaltung` ADD COLUMN `regelwerke_id` INT(11) NOT NULL DEFAULT '0' AFTER `bezeichnung`;";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '114'"
. "\n WHERE name = 'datenbank_version'";
@@ -5519,13 +5521,18 @@ function updateDatabase(): void
if ($datenbank_version < 115) {
// Erweiterung Tabelle #__sportsmanager_verschieberegel
$columns = $db->getTableColumns('#__sportsmanager_verschieberegel');
if (!array_key_exists('begruendung_erforderlich', $columns)
|| !array_key_exists('vereine_berechtigt', $columns)
|| !array_key_exists('verband_berechtigt', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_verschieberegel`"
."\n ADD COLUMN IF NOT EXISTS `begruendung_erforderlich` INT(1) NOT NULL DEFAULT 0 AFTER `ablehnen`,"
."\n ADD COLUMN IF NOT EXISTS `vereine_berechtigt` INT(1) NOT NULL DEFAULT 1 AFTER `begruendung_erforderlich`,"
."\n ADD COLUMN IF NOT EXISTS `verband_berechtigt` INT(1) NOT NULL DEFAULT 0 AFTER `vereine_berechtigt`;";
. "\n ADD COLUMN `begruendung_erforderlich` INT(1) NOT NULL DEFAULT 0 AFTER `ablehnen`,"
. "\n ADD COLUMN `vereine_berechtigt` INT(1) NOT NULL DEFAULT 1 AFTER `begruendung_erforderlich`,"
. "\n ADD COLUMN `verband_berechtigt` INT(1) NOT NULL DEFAULT 0 AFTER `vereine_berechtigt`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "INSERT IGNORE INTO `#__sportsmanager_email_vorlagen` (`email_vorlagen_id`, `vorlage`) VALUES (NULL, 'Spielverlegung');";
@@ -5543,21 +5550,29 @@ function updateDatabase(): void
if ($datenbank_version < 116) {
$columns = $db->getTableColumns('#__sportsmanager_spielort');
if (!array_key_exists('telefon', $columns)
|| !array_key_exists('email', $columns)
|| !array_key_exists('ruhetage', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_spielort`"
. "\n ADD IF NOT EXISTS `telefon` VARCHAR(64) NULL DEFAULT NULL AFTER `url`,"
. "\n ADD IF NOT EXISTS `email` VARCHAR(64) NULL DEFAULT NULL AFTER `telefon`,"
. "\n ADD IF NOT EXISTS `ruhetage` VARCHAR(64) NULL DEFAULT NULL AFTER `email`;";
. "\n ADD `telefon` VARCHAR(64) NULL DEFAULT NULL AFTER `url`,"
. "\n ADD `email` VARCHAR(64) NULL DEFAULT NULL AFTER `telefon`,"
. "\n ADD `ruhetage` VARCHAR(64) NULL DEFAULT NULL AFTER `email`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$columns = $db->getTableColumns('#__sportsmanager_team');
if (!array_key_exists('trainingstage', $columns)){
$query = "ALTER TABLE `#__sportsmanager_team`"
. "\n ADD IF NOT EXISTS `trainingstage` VARCHAR(64) NULL DEFAULT NULL AFTER `heimspielort_id`;";
. "\n ADD `trainingstage` VARCHAR(64) NULL DEFAULT NULL AFTER `heimspielort_id`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '116'"
@@ -5581,10 +5596,15 @@ function updateDatabase(): void
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$columns = $db->getTableColumns('#__sportsmanager_veranstaltung');
if (!array_key_exists('explizite_strafen', $columns)) {
$query = "ALTER TABLE #__sportsmanager_veranstaltung"
. "\n ADD IF NOT EXISTS explizite_strafen tinyint(4) DEFAULT '0' AFTER elo_wertung";
. "\n ADD explizite_strafen tinyint(4) DEFAULT '0' AFTER elo_wertung";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "UPDATE #__sportsmanager_einstellungen SET wert = '117' WHERE name = 'datenbank_version'";
$db->setQuery($query);
@@ -5688,6 +5708,85 @@ function updateDatabase(): void
}
}
if ($datenbank_version < 120) {
$columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus');
if (!array_key_exists('spiele_in_spielerstatistik', $columns)){
$query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`"
. "\n ADD `spiele_in_spielerstatistik` INT(4) NOT NULL DEFAULT '0' AFTER `heimtausch`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$columns = $db->getTableColumns('#__sportsmanager_bestenliste_punkte');
if (!array_key_exists('team_id', $columns)){
$query = "ALTER TABLE `#__sportsmanager_bestenliste_punkte`"
. "\n ADD `team_id` INT(11) NULL DEFAULT NULL AFTER `spieler_2_id`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$spielerstatistik_aktualisieren = true;
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '120'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($datenbank_version < 121) {
$columns = $db->getTableColumns('#__sportsmanager_mitglied_von_halloffame');
if (!array_key_exists('teamspieler', $columns)){
$query = "ALTER TABLE `#__sportsmanager_mitglied_von_halloffame`"
. "\n ADD `teamspieler` TEXT NULL DEFAULT NULL AFTER `teamname`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if (!array_key_exists('nicht_ausgespielt', $columns)){
$query = "ALTER TABLE `#__sportsmanager_mitglied_von_halloffame`"
. "\n ADD `nicht_ausgespielt` TINYINT(1) NOT NULL DEFAULT '0' AFTER `jahr`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$columns = $db->getTableColumns('#__sportsmanager_spielort');
if (!array_key_exists('zusatzinfo', $columns)){
$query = "ALTER TABLE `#__sportsmanager_spielort`"
. "\n ADD `zusatzinfo` TEXT NULL DEFAULT NULL AFTER `ruhetage`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$zielpfad = JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . 'n.png';
if (!is_file($zielpfad)) {
$quellpfad = JPATH_SITE . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_sportsmanager' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'spieler-n.png';
bildKopierenAngepasst($quellpfad, $zielpfad, 180, 240, 1);
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '121'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($termin_aktionen_email_setzen) {
$query = "SELECT aktion_user_id, termin_aktion_id"
. "\n FROM #__sportsmanager_termin_aktion";
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because it is too large Load Diff
@@ -19,11 +19,17 @@ require_once JPATH_SITE . '/components/com_sportsmanager/database/init.php';
/** @noinspection PhpUnused */
function mathParserVerteilung($rohpunkte, $platz, $teilnehmer, $multiplikator) {
if ($teilnehmer <= 1){
return 0;
}
return max(round($multiplikator * round(((($rohpunkte - 1) * (-log($platz / $teilnehmer) * (1 - ($platz / $teilnehmer)))) / (-log(1 / $teilnehmer) * (1 - (1 / $teilnehmer)))) + 1)), 1);
}
/** @noinspection PhpUnused */
function mathParserVerteilungR($rohpunkte, $platz, $teilnehmer, $multiplikator) {
if ($teilnehmer <= 1){
return 0;
}
return max(round(((($multiplikator * $rohpunkte - 1) * (-log($platz / $teilnehmer) * (1 - ($platz / $teilnehmer)))) / (-log(1 / $teilnehmer) * (1 - (1 / $teilnehmer)))) + 1), 1);
}
@@ -226,6 +232,217 @@ function kategorieFilter($prefix, $suffix = ""): string
return " $prefix (" . implode(", ", $filter) . ") $suffix";
}
function idListeParameterFilter(string $parameterName, string $prefix, string $suffix = ""): string
{
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$werte = $jInput->get($parameterName, '', 'STRING');
$result = [];
foreach (explode(",", $werte) as $item) {
$item = trim($item);
if ($item === '') continue;
$num = intval($item);
if ($num > 0) {
$result[$num] = true; // Duplikate vermeiden
}
}
if (empty($result)) {
return "";
}
$filter = array_keys($result);
sort($filter, SORT_NUMERIC);
return " $prefix (" . implode(", ", $filter) . ") $suffix";
}
function halloffameIdFilter($prefix): string
{
// Keine Bereichssuche bei der Halloffame-Id, nur einzelne Werte
return idListeParameterFilter('halloffame_id', $prefix);
}
function halloffameJahrFilter($prefix): string
{
$minJahr = 1900;
$maxJahr = (int) date('Y') + 5;
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$werte = $jInput->get('jahr', '', 'STRING');
$result = [];
foreach (explode(",", $werte) as $item) {
$item = trim($item);
if ($item === '') continue;
// Prüfen, ob es ein Bereich ist
if (strpos($item, '-') !== false) {
$rangeParts = explode('-', $item);
// genau 2 Teile für einen gültigen Bereich
if (count($rangeParts) !== 2) continue;
$start = intval(trim($rangeParts[0]));
$end = intval(trim($rangeParts[1]));
if ($start <= 0 || $end <= 0) continue;
// Werte vertauschen, falls der 2. Wert kleiner als der 1. ist
if ($end < $start) {
[$start, $end] = [$end, $start];
}
// Bereich auf 1900 .. aktuelles Jahr+5 begrenzen
$start = max($start, $minJahr);
$end = min($end, $maxJahr);
if ($start > $end) continue;
for ($i = $start; $i <= $end; $i++) {
$result[$i] = true; // Duplikate vermeiden
}
} else {
$num = intval($item);
if ($num <= 0) continue;
// Einzelwert auf 1900 .. aktuelles Jahr+5 begrenzen
$num = max($minJahr, min($maxJahr, $num));
$result[$num] = true;
}
}
if (empty($result)) {
return "";
}
$filter = array_keys($result);
sort($filter, SORT_NUMERIC);
return " $prefix (" . implode(", ", $filter) . ")";
}
function halloffameAlleTeams($db): array
{
return loadObjectList($db, "SELECT team_id, teamname FROM #__sportsmanager_team ORDER BY team_id DESC");
}
function halloffameTeamIdFuerTeamname(array $alleTeams, ?string $teamname)
{
if (empty($teamname))
return null;
foreach ($alleTeams as $team) {
if (str_starts_with($team->teamname, $teamname))
return $team->team_id;
}
return null;
}
function halloffameAlleSpielerInfo($db): array
{
// "Aktiv" = hat einen aktuellen Verein; ohne aktuellen Verein liefert spieler_details ohnehin keine Daten
$rows = loadObjectList($db, "SELECT spieler_id, geschlecht, aktueller_verein_id FROM #__sportsmanager_spieler");
$result = [];
foreach ($rows as $row) {
$result[$row->spieler_id] = (object) [
'geschlecht' => $row->geschlecht,
'aktiv' => !empty($row->aktueller_verein_id),
];
}
return $result;
}
function halloffameSpielerAktiv(array $alleSpielerInfo, $spieler_id): bool
{
return empty($spieler_id) || !isset($alleSpielerInfo[$spieler_id]) || $alleSpielerInfo[$spieler_id]->aktiv;
}
function halloffameSpielerBildId(array $alleSpielerInfo, $spieler_id)
{
return halloffameSpielerAktiv($alleSpielerInfo, $spieler_id) ? $spieler_id : '';
}
function halloffameSpielerBildAlternativ(array $alleSpielerInfo, $spieler_id, string $geschaetztesGeschlecht = ''): string
{
if (!empty($spieler_id) && isset($alleSpielerInfo[$spieler_id]))
return $alleSpielerInfo[$spieler_id]->geschlecht == 'M' ? 'm' : 'w';
if ($geschaetztesGeschlecht === 'M')
return 'm';
if ($geschaetztesGeschlecht === 'W')
return 'w';
return 'n';
}
function halloffameGeschlechtZaehlen(object $ziel, array $alleSpielerInfo, $spieler1_id, $spieler2_id): void
{
foreach ([$spieler1_id, $spieler2_id] as $id) {
if (empty($id) || !isset($alleSpielerInfo[$id]))
continue;
if ($alleSpielerInfo[$id]->geschlecht == 'M')
$ziel->anzahl_m++;
else
$ziel->anzahl_w++;
}
}
function halloffameGeschaetztesGeschlecht($anzahl_m, $anzahl_w): string
{
if ($anzahl_m > $anzahl_w)
return 'M';
if ($anzahl_w > $anzahl_m)
return 'W';
return '';
}
function halloffameAlleVereineInfo($db): array
{
$rows = loadObjectList($db, "SELECT verein_id, ausgetreten FROM #__sportsmanager_verein");
$result = [];
foreach ($rows as $row) {
$result[$row->verein_id] = (object) [
'aktiv' => empty($row->ausgetreten),
];
}
return $result;
}
function halloffameVereinAktiv(array $alleVereineInfo, $verein_id): bool
{
return empty($verein_id) || !isset($alleVereineInfo[$verein_id]) || $alleVereineInfo[$verein_id]->aktiv;
}
function halloffameNameLink(string $bild_type, $id, array $alleSpielerInfo, array $alleVereineInfo, string $nameHtml): string
{
if (empty($id))
return $nameHtml;
if ($bild_type === 'spieler' && !halloffameSpielerAktiv($alleSpielerInfo, $id))
return $nameHtml;
if ($bild_type === 'vereine' && !halloffameVereinAktiv($alleVereineInfo, $id))
return $nameHtml;
$tasks = ['spieler' => 'spieler_details', 'vereine' => 'verein_details', 'mannschaften' => 'team_details'];
if (!isset($tasks[$bild_type]))
return $nameHtml;
return '<a href="' . SportsManagerURL('&task=' . $tasks[$bild_type] . '&id=' . $id) . '">' . $nameHtml . '</a>';
}
function halloffameTitel(): string
{
global $params;
$titel = trim((string) $params->get('titel', ''));
if ($titel !== '')
return $titel;
$menu = Factory::getContainer()->get(SiteApplication::class)->getMenu()->getActive();
if ($menu !== null && trim((string) $menu->title) !== '')
return $menu->title;
return '';
}
function turnierFilter($prefix): string
{
$user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
@@ -45,6 +45,11 @@
default=""
label="COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_CATEGORIES"
description="COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_CATEGORIES_DESC" />
<field name="zusatzparameter"
type="text"
default=""
label="COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_EXTRA_PARAMS"
description="COM_SPORTSMANAGER_LAYOUT_GENERAL_CONTENT_OPTION_EXTRA_PARAMS_DESC" />
</fieldset>
</fields>
</metadata>
File diff suppressed because it is too large Load Diff
@@ -3539,7 +3539,7 @@ class HTML_sportsmanager_admin
<?php
}
static function adminVereine($rows, $organisationAnzeigen): void
static function adminVereine($rows, $organisationAnzeigen, $ansprechpartner): void
{
global $params;
@@ -3599,6 +3599,8 @@ class HTML_sportsmanager_admin
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_BEATEN'); ?></strong></th>
<th></th>
<th></th>
</tr>
<?php
@@ -3661,6 +3663,14 @@ class HTML_sportsmanager_admin
</td>
<td nowrap><?php if (!empty($row->vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?></td>
<td nowrap><?php echo $row->ausgetreten ? Text::_('COM_SPORTSMANAGER_YES') : Text::_('COM_SPORTSMANAGER_NO'); ?></td>
<td>
<?PHP
if (!empty($ansprechpartner[$row->verein_id])){
$emails = implode(';', $ansprechpartner[$row->verein_id]);
echo "<a href='mailto:" . $emails . "?subject=" . $row->vereinsname . "'>E-Mail</a>&nbsp;";
}
?>
</td>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_verein_remove&id=' . $row->verein_id); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_WANT_REALLY_REMOVE'); ?>');"
@@ -4426,6 +4436,17 @@ class HTML_sportsmanager_admin
value="<?php if ($row != null) echo htmlentities_utf8($row->ruhetage); ?>"/>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right; vertical-align: top">
<label
for="zusatzinfo"><?php echo Text::_('COM_SPORTSMANAGER_ADDITIONAL_INFO'); ?>
:</label>
</td>
<td nowrap>
<textarea name="zusatzinfo" id="zusatzinfo" cols="60"
rows="8"><?php if ($row != null) echo htmlentities_utf8($row->zusatzinfo); ?></textarea>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right; vertical-align: top">
<label
@@ -4834,6 +4855,29 @@ class HTML_sportsmanager_admin
</select>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
for="games_in_statistik"><?php echo Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK'); ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="spiele_in_spielerstatistik"
id="games_in_statistik" size="1">
<option value="0"><?php echo Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL'); ?></option>
<?php
for ($i = 1; $i <= 36; $i++) {
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->spiele_in_spielerstatistik == $i ? " selected" : "") : "") . ">" . $i . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label for="status"><?php echo Text::_('COM_SPORTSMANAGER_ACTIVE'); ?>
@@ -6362,8 +6406,13 @@ class HTML_sportsmanager_admin
<select class="uk-select uk-form-width-large" name="tabellenwertung"
id="table_evaluation" size="1">
<?php
$typ = array(Text::_('COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE'), Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX'), Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX2'));
for ($i = 0; $i <= 2; $i++) {
$typ = array(0 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX0'),
1 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX1'),
2 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX2'),
3 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX3'),
4 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX4'),
5 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX5'));
for ($i = 0; $i <= 5; $i++) {
echo "<option value=\"" . $i . "\"" . ($spielerstatistik != null ? ($spielerstatistik->tabellenwertung == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($typ[$i]) . "</option>";
}
?>
@@ -7087,6 +7136,7 @@ class HTML_sportsmanager_admin
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>" style='width: 100%;'>
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap><strong>ID</strong></th>
@@ -7137,6 +7187,7 @@ class HTML_sportsmanager_admin
}
?>
</table>
</div>
<?php
}
}
@@ -7432,7 +7483,8 @@ class HTML_sportsmanager_admin
}
}
?>
</table></div>
</table>
</div>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
@@ -7552,7 +7604,7 @@ class HTML_sportsmanager_admin
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='width: 400px;' class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th style='text-align: left; width: 250px;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_ASSOCIATION_BODIES'); ?></strong></th>
@@ -7585,7 +7637,7 @@ class HTML_sportsmanager_admin
}
?>
</table>
</div>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<input type="submit" value="<?php echo Text::_('COM_SPORTSMANAGER_EXPORT'); ?>" class="button"
onclick="const t = this.form.task;
@@ -7732,6 +7784,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='width: 800px;' class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th style='text-align: left; width: 240px;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_MEMBER'); ?></strong></th>
@@ -7770,6 +7823,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -7951,6 +8005,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
@@ -7985,6 +8040,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -8122,8 +8178,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?php
if ($rows != null) {
$einspaltigesDoppel = ($halloffame->spielform == 2 && !$halloffame->platz2_zeigen && !$halloffame->platz3_zeigen);
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
@@ -8137,7 +8194,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if ($i == 2 && !$halloffame->platz2_zeigen) continue;
if ($i == 3 && !$halloffame->platz3_zeigen) continue;
?>
<th style="text-align:center;" colspan="2" nowrap>
<th style="text-align:center;" colspan="<?php echo $einspaltigesDoppel ? 4 : 2; ?>" nowrap>
<strong><?php echo Text::_('COM_SPORTSMANAGER_PLACE') . " " . $i; ?></strong>
</th>
<?php } ?>
@@ -8153,7 +8210,42 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
$rowclass = "sectiontableentry" . ($k + 1) . $params->get('pageclass_sfx');
$k = ($k + 1) % 2;
if ($halloffame->spielform == 2) {
if ($halloffame->spielform == 2 && $einspaltigesDoppel) {
?>
<tr class="<?php echo $rowclass; ?>">
<td nowrap style="text-align:center;">
<a href="<?php echo SportsManagerURL('&task=admin_halloffame_mitglied_edit&halloffame_id=' . $halloffame->halloffame_id . '&jahr=' . $row->jahr); ?>">
<?php echo $row->jahr; ?>
</a>
</td>
<td nowrap style="text-align:center; width:70px;">
<?php echo bildHTML("spieler", $row->spieler1_id_1, 45, 60, 0, 0, 'border="0"'); ?>
</td>
<td nowrap style="text-align:left; width:300px;">
<?php echo htmlentities_utf8($row->spieler1_1); ?>
</td>
<td nowrap style="text-align:center; width:70px;">
<?php echo bildHTML("spieler", $row->spieler2_id_1, 45, 60, 0, 0, 'border="0"'); ?>
</td>
<td nowrap style="text-align:left; width:300px;">
<?php echo htmlentities_utf8($row->spieler2_1); ?>
</td>
<td nowrap>
<small>
<a href="<?php echo SportsManagerURL('&task=admin_halloffame_mitglied_remove&halloffame_id=' . $halloffame->halloffame_id . '&jahr=' . $row->jahr); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_REMOVE_HALL_OF_FAME_YEAR'); ?>');"
title="<?php echo Text::_('COM_SPORTSMANAGER_REMOVE'); ?>">
X
</a>
</small>
</td>
</tr>
<?php
} else if ($halloffame->spielform == 2) {
?>
<!-- Erste Zeile -->
@@ -8221,9 +8313,13 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if ($i == 2 && !$halloffame->platz2_zeigen) continue;
if ($i == 3 && !$halloffame->platz3_zeigen) continue;
if ($halloffame->spielform == 1) {
$id = "verein_id_" . $i;
$txt = "teamname_" . $i;
$id = "verein_id_" . $i;
$type = "vereine";
if ($row->$id == ""){
$id = "team_id_" . $i;
$type = "mannschaften";
}
} else {
$id = "spieler1_id_" . $i;
$txt = "spieler1_" . $i;
@@ -8253,6 +8349,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -8260,11 +8357,58 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
static function adminEditHalloffameMitglied($row,$halloffame,$vereine,$spieler,$jahre): void
{
global $params;
// Options nur einmal aufbauen (statt bis zu 6x je Formular) - bei grossen Spieler-/Vereinslisten deutlich schneller
$vereineOptionsHtml = '';
$spielerOptionsHtml = '';
if ($halloffame->spielform == 1) {
$vereineAktiv = array();
$vereineInaktiv = array();
foreach ($vereine as $v) {
if (empty($v->ausgetreten))
$vereineAktiv[] = $v;
else
$vereineInaktiv[] = $v;
}
$ausgetretenSuffix = " (" . Text::_('COM_SPORTSMANAGER_BEATEN') . ")";
$vereineOptionsHtml = '<option value="0"></option>';
$vereineOptionsHtml .= '<optgroup label="' . htmlentities_utf8(Text::_('COM_SPORTSMANAGER_ACTIVE_CLUBS')) . '">';
foreach ($vereineAktiv as $v)
$vereineOptionsHtml .= '<option value="' . $v->verein_id . '">' . htmlentities_utf8($v->verein) . '</option>';
$vereineOptionsHtml .= '</optgroup>';
$vereineOptionsHtml .= '<optgroup label="' . htmlentities_utf8(Text::_('COM_SPORTSMANAGER_INACTIVE_CLUBS')) . '">';
foreach ($vereineInaktiv as $v)
$vereineOptionsHtml .= '<option value="' . $v->verein_id . '">' . htmlentities_utf8($v->verein . $ausgetretenSuffix) . '</option>';
$vereineOptionsHtml .= '</optgroup>';
} else {
$spielerOptionsHtml = '<option value="0"></option>';
foreach ($spieler as $s)
$spielerOptionsHtml .= '<option value="' . $s->spieler_id . '">' . htmlentities_utf8($s->spieler) . '</option>';
}
?>
<div
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo htmlentities_utf8($halloffame->halloffame); ?>
: <?php echo($row != null ? Text::_('COM_SPORTSMANAGER_CHANGING') : Text::_('COM_SPORTSMANAGER_ADD')); ?></div>
<template id="halloffame-vereine-options"><?php echo $vereineOptionsHtml; ?></template>
<template id="halloffame-spieler-options"><?php echo $spielerOptionsHtml; ?></template>
<script type="text/javascript">
function halloffameNichtAusgespieltUmschalten(deaktiviert) {
document.querySelectorAll('.halloffame-platz-zeile input, .halloffame-platz-zeile select, .halloffame-platz-zeile textarea').forEach(function (feld) {
feld.disabled = deaktiviert;
});
}
function halloffameOptionenFuellen(selectId, templateId, wert) {
var select = document.getElementById(selectId);
var template = document.getElementById(templateId);
select.innerHTML = template.innerHTML;
if (wert) select.value = wert;
}
</script>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm"
enctype="multipart/form-data">
<div class="uk-overflow-auto">
@@ -8283,6 +8427,13 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</select>
&nbsp;&nbsp;
<label for="nicht_ausgespielt">
<input type="checkbox" name="nicht_ausgespielt" id="nicht_ausgespielt" value="1"
onclick="halloffameNichtAusgespieltUmschalten(this.checked);"
<?php echo ($row != null && !empty($row->nicht_ausgespielt)) ? " checked" : ""; ?> />
<?php echo Text::_('COM_SPORTSMANAGER_HALL_OF_FAME_NOT_HELD'); ?>
</label>
</td>
</tr>
<?php
@@ -8290,26 +8441,35 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if ($halloffame->spielform == 1){
$index_vereinid = "verein_id_" . $p;
$index_team = "teamname_" . $p;
$index_teamspieler = "teamspieler_" . $p;
?>
<tr>
<tr class="halloffame-platz-zeile">
<td nowrap style="width: 20%; text-align: right">
<label for="verein1_<?php echo $p; ?>"><?php echo Text::_('COM_SPORTSMANAGER_PLACE') . " " . $p; ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-large" name="verein_id_<?php echo $p; ?>"
id="verein_id_<?php echo $p; ?>" size="1" style="width: 370px;">
<?php
echo "<option value=\"0\"></option>";
foreach ($vereine as $v)
echo "<option value=\"" . $v->verein_id . "\"" . ($row != null ? ($row->$index_vereinid == $v->verein_id ? " selected" : "") : "") . ">" . htmlentities_utf8($v->verein) . "</option>";
?>
</select>
id="verein_id_<?php echo $p; ?>" size="1" style="width: 370px;"></select>
<script type="text/javascript">
halloffameOptionenFuellen('verein_id_<?php echo $p; ?>', 'halloffame-vereine-options', '<?php echo $row != null ? (int) $row->$index_vereinid : 0; ?>');
</script>
<input class="inputbox uk-select" type="text" style="width: 370px; height: 35px;"
name="teamname_<?php echo $p; ?>" id="verein_<?php echo $p; ?>" size="50" maxlength="64"
value="<?php echo $row != null ? htmlentities_utf8($row->$index_team) : ''; ?>"/>
</td>
</tr>
<tr class="halloffame-platz-zeile">
<td nowrap style="width: 20%; text-align: right">
<label for="teamspieler_<?php echo $p; ?>"><?php echo Text::_('COM_SPORTSMANAGER_HALL_OF_FAME_TEAM_PLAYERS'); ?>
:</label>
</td>
<td nowrap>
<textarea class="uk-textarea" style="width: 740px; height: 70px;"
name="teamspieler_<?php echo $p; ?>" id="teamspieler_<?php echo $p; ?>"
><?php echo $row != null ? htmlentities_utf8($row->$index_teamspieler) : ''; ?></textarea>
</td>
</tr>
<?php
}
@@ -8319,33 +8479,27 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
$index_spieler2id = "spieler2_id_" . $p;
$index_spieler2 = "spieler2_" . $p;
?>
<tr>
<tr class="halloffame-platz-zeile">
<td nowrap style="width: 20%; text-align: right">
<label for="player1_<?php echo $p; ?>"><?php echo Text::_('COM_SPORTSMANAGER_PLACE') . " " . $p; ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-large" name="spieler1_id_<?php echo $p; ?>"
id="player1_id_<?php echo $p; ?>" size="1" style="width: 370px;">
<?php
echo "<option value=\"0\"></option>";
foreach ($spieler as $s)
echo "<option value=\"" . $s->spieler_id . "\"" . ($row != null ? ($row->$index_spieler1id == $s->spieler_id ? " selected" : "") : "") . ">" . htmlentities_utf8($s->spieler) . "</option>";
?>
</select>
id="player1_id_<?php echo $p; ?>" size="1" style="width: 370px;"></select>
<script type="text/javascript">
halloffameOptionenFuellen('player1_id_<?php echo $p; ?>', 'halloffame-spieler-options', '<?php echo $row != null ? (int) $row->$index_spieler1id : 0; ?>');
</script>
<input class="inputbox uk-select" type="text" style="width: 370px; height: 35px;"
name="spieler1_<?php echo $p; ?>" id="player1_<?php echo $p; ?>" size="50" maxlength="64"
value="<?php echo $row != null ? htmlentities_utf8($row->$index_spieler1) : ''; ?>"/>
<?PHP if ($halloffame->spielform == 2){ ?>
<br>
<select class="uk-select uk-form-width-large" name="spieler2_id_<?php echo $p; ?>"
id="player2_id_<?php echo $p; ?>" size="1" style="width: 370px;">
<?php
echo "<option value=\"0\"></option>";
foreach ($spieler as $s)
echo "<option value=\"" . $s->spieler_id . "\"" . ($row != null ? ($row->$index_spieler2id == $s->spieler_id ? " selected" : "") : "") . ">" . htmlentities_utf8($s->spieler) . "</option>";
?>
</select>
id="player2_id_<?php echo $p; ?>" size="1" style="width: 370px;"></select>
<script type="text/javascript">
halloffameOptionenFuellen('player2_id_<?php echo $p; ?>', 'halloffame-spieler-options', '<?php echo $row != null ? (int) $row->$index_spieler2id : 0; ?>');
</script>
<input class="inputbox uk-select" type="text" style="width: 370px; height: 35px;"
name="spieler2_<?php echo $p; ?>" id="player2_<?php echo $p; ?>" size="50" maxlength="64"
value="<?php echo $row != null ? htmlentities_utf8($row->$index_spieler2) : ''; ?>"/>
@@ -8368,6 +8522,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<input type="hidden" name="halloffame_id" value="<?php echo $halloffame->halloffame_id; ?>"/>
<input type="hidden" name="spielform" value="<?php echo $halloffame->spielform; ?>"/>
</form>
<script type="text/javascript">
halloffameNichtAusgespieltUmschalten(document.getElementById('nicht_ausgespielt').checked);
</script>
<?php
}
@@ -8489,6 +8646,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='width: 100%;' class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th style='text-align: left;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_RULEBOOK'); ?></strong></th>
@@ -8523,6 +8681,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -9425,12 +9584,16 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="direktervergleich" id="dd_hthr" size="1">
<select class="uk-select uk-form-width-large" name="direktervergleich" id="dd_hthr" size="1">
<?php
$direktervergleich = array(Text::_('COM_SPORTSMANAGER_NO'), Text::_('COM_SPORTSMANAGER_YES'));
for ($i = 0; $i <= 1; $i++) {
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->direktervergleich == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($direktervergleich[$i]) . "</option>";
}
$typ = array(
0 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_NOT'),
1 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS'),
2 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS'),
3 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS')
);
foreach ($typ as $typ_wert => $typ_bezeichnung)
echo "<option value=\"" . $typ_wert . "\"" . ($row != null ? ($row->direktervergleich == $typ_wert ? " selected" : "") : "") . ">" . htmlentities_utf8($typ_bezeichnung) . "</option>";
?>
</select>
</td>
@@ -9652,7 +9815,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
function pruefeAnzeige() {
const wert = parseInt(dropdown.value);
if (wert >= 1 && wert <= 9) {
if (wert >= 1 && wert <= 11) {
zeile.style.display = "";
} else {
zeile.style.display = "none";
@@ -9666,7 +9829,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?php
}
static function adminMannschaften($veranstaltung, $rows): void
static function adminMannschaften($veranstaltung, $rows, $ansprechpartner): void
{
global $params;
@@ -9716,6 +9879,8 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<th nowrap title="<?php echo Text::_('COM_SPORTSMANAGER_NUM_REQUESTED_SHFITS_TOOLTIP'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_HOME_VENUE'); ?></strong></th>
<th></th>
<th></th>
</tr>
<?php
@@ -9758,6 +9923,14 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</td>
<td nowrap align="center"><?php echo $row->anzahl_verschiebungen; ?></td>
<td nowrap><?php if (!empty($row->name)) echo htmlentities_utf8($row->name); ?></td>
<td>
<?PHP
if (!empty($ansprechpartner[$row->team_id])){
$emails = implode(';', $ansprechpartner[$row->team_id]);
echo "<a href='mailto:" . $emails . "?subject=" . $row->teamname . "'>E-Mail</a>&nbsp;";
}
?>
</td>
<?php if ($row->begegnungen == 0) { ?>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_team_remove&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->team_id); ?>"
@@ -11093,7 +11266,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
?>
</td>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_begegnung_heimtausch&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->begegnung_id); ?>"><?php echo Text::_('COM_SPORTSMANAGER_HOME_EXCHANGE'); ?></a></small>
href="<?php echo SportsManagerURL('&task=admin_begegnung_heimtausch&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->begegnung_id); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_SWAP_MATCH'); ?>');">
<?php echo Text::_('COM_SPORTSMANAGER_HOME_EXCHANGE'); ?></a></small>
</td>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_begegnung_remove&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->begegnung_id); ?>"
@@ -11462,6 +11637,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
8 => Text::_('COM_SPORTSMANAGER_MODIFIED_RESULTS'),
9 => Text::_('COM_SPORTSMANAGER_LIVE_RESULTS'),
10 => Text::_('COM_SPORTSMANAGER_REJECTED_SHIFT'),
11 => Text::_('COM_SPORTSMANAGER_SWAP_MATCH'),
12 => Text::_('COM_SPORTSMANAGER_MATCH_REPORT_DELETED'),
13 => Text::_('COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED'),
default => Text::_('COM_SPORTSMANAGER_PROPOSED_APPOINTMENT'),
};
?>
@@ -11562,6 +11740,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
?>
<input type="submit" name="heimrecht_tauschen"
value="<?php echo Text::_('COM_SPORTSMANAGER_ADVANTAGE_HOME'); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_SWAP_MATCH'); ?>');"
class="button"/>
<?php
}
@@ -11769,8 +11948,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
$spiel_einzel = $spieltypen[$i - 1][0] != "D";
if (($spiel_einzel && $spielpunkte_wertung_einzel == 2) || (!$spiel_einzel && $spielpunkte_wertung_doppel == 2))
continue;
echo " punkte_heim = document.adminForm.spiel_" . $i . "_heim_punkte.value != '' ? document.adminForm.spiel_" . $i . "_heim_punkte.value : 0;\n"
. " punkte_gast = document.adminForm.spiel_" . $i . "_gast_punkte.value != '' ? document.adminForm.spiel_" . $i . "_gast_punkte.value : 0;\n"
// Number(): .value ist eine Zeichenkette, "10" > "9" wäre sonst unwahr
echo " punkte_heim = document.adminForm.spiel_" . $i . "_heim_punkte.value != '' ? Number(document.adminForm.spiel_" . $i . "_heim_punkte.value) : 0;\n"
. " punkte_gast = document.adminForm.spiel_" . $i . "_gast_punkte.value != '' ? Number(document.adminForm.spiel_" . $i . "_gast_punkte.value) : 0;\n"
. " if (punkte_heim > punkte_gast)\n"
. " spielpunkte_heim += " . ($spiel_einzel ? "spielpunkte_sieg_einzel" : "spielpunkte_sieg_doppel") . ";\n"
. " else if (punkte_heim < punkte_gast)\n"
@@ -11996,11 +12176,12 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
?>
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>"
class="button"<?php if (!empty($js_pruefung)) echo " onclick=\"" . $js_pruefung . "return true;\""; ?> />
<input type="submit" name="loeschen" value="<?php echo Text::_('COM_SPORTSMANAGER_DELETE'); ?>"
class="button" onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT'); ?>');" />
<?php
}
?>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>"
class="button"/>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>" class="button"/>
<input type="hidden" name="task" value="admin_begegnung_spielplan_save"/>
<input type="hidden" name="id" value="<?php echo($begegnung != null ? $begegnung->begegnung_id : "0"); ?>"/>
<input type="hidden" name="veranstaltungid" value="<?php echo $veranstaltung->veranstaltung_id; ?>"/>
@@ -12020,7 +12201,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
static function adminBegegnungenGenerieren($veranstaltung, $rows): void
{
//geändert am 07.03.2025 von Jürgen Meyer
global $params;
$anzahlteams = count($rows);
if ($anzahlteams % 2)
@@ -12770,6 +12950,12 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
{
global $params;
?>
<script type="text/javascript">
function anzeige_aktualisieren() {
document.getElementById("export_row").style.display = document.adminForm.exportformat.value !== "jsondatei" ? '' : 'none';
}
window.addEventListener("pageshow", anzeige_aktualisieren);
</script>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<div class="uk-overflow-auto">
<table style="width: 500px">
@@ -12789,7 +12975,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
</select>
</td>
</tr>
<tr>
<tr id="export_row">
<td nowrap style="text-align: right">
<label for="export">Exportieren</label>
</td>
@@ -12807,8 +12993,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<label for="exportformat">Exportformat</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-large" style='width: 320px;' name="exportformat" id="exportformat" size="1">
<select class="uk-select uk-form-width-large" style='width: 320px;' name="exportformat" id="exportformat" size="1" onchange="anzeige_aktualisieren();">
<option value='csvdatei'>CSV-Datei</option>
<option value='jsondatei'>JSON-Datei</option>
</select>
</td>
</tr>
@@ -157,6 +157,7 @@ COM_SPORTSMANAGER_DEFEAT="Niederlage"
COM_SPORTSMANAGER_DEFEATS="Niederlagen"
COM_SPORTSMANAGER_DEFEATS_SHORTCUT="N"
COM_SPORTSMANAGER_GOALS="Tore"
COM_SPORTSMANAGER_GOALS_SHORTCUT="T"
COM_SPORTSMANAGER_SETS="S&auml;tze"
COM_SPORTSMANAGER_POINT="Punkt"
COM_SPORTSMANAGER_POINTS="Punkte"
@@ -169,9 +170,9 @@ COM_SPORTSMANAGER_GAME_POINTS="Spielpunkte"
COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="SP"
COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (eine Mannschaft)"
COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (Mannschaften zusammen)"
COM_SPORTSMANAGER_DIFFERENCE="Differenz"
COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Punktedifferenz"
COM_SPORTSMANAGER_POINTS_RATIO="Punkteverh&auml;ltnis"
COM_SPORTSMANAGER_DIFFERENCE="Differenz Tore"
COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Differenz Spielpunkte"
COM_SPORTSMANAGER_POINTS_RATIO="Verh&auml;ltnis Spielpunkte"
COM_SPORTSMANAGER_SCHEDULE_DATE="Zeitpunkt"
COM_SPORTSMANAGER_TEAM_HOME="Heim"
COM_SPORTSMANAGER_TEAM_VISITOR="Gast"
@@ -296,10 +297,9 @@ COM_SPORTSMANAGER_REQUEST_MESSAGE_PLURAL="Es m&uuml;ssen mindestens %d Termine v
COM_SPORTSMANAGER_REJECT_SHIFT="Verschiebung ablehnen"
COM_SPORTSMANAGER_TO="bis"
COM_SPORTSMANAGER_PLAYER_STATISTICS="Spielerstatistiken"
COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="LI"
COM_SPORTSMANAGER_WON="gewonnen"
COM_SPORTSMANAGER_LOST="verloren"
COM_SPORTSMANAGER_RATE="Quote"
COM_SPORTSMANAGER_RATE="Siegquote"
COM_SPORTSMANAGER_RATE_SHORTCUT="Q"
COM_SPORTSMANAGER_NO_CLUB="Kein Verein"
COM_SPORTSMANAGER_RATING="Wertung"
@@ -395,6 +395,8 @@ COM_SPORTSMANAGER_BEATEN="Ausgetreten"
COM_SPORTSMANAGER_HIDE="Verstecken"
COM_SPORTSMANAGER_PASSIVE="Passiv"
COM_SPORTSMANAGER_BEATEN_CLUB="Verein ausgetreten"
COM_SPORTSMANAGER_ACTIVE_CLUBS="Aktive Vereine"
COM_SPORTSMANAGER_INACTIVE_CLUBS="Inaktive Vereine"
COM_SPORTSMANAGER_SINGLE_SEED="Elo-Startwert Einzel"
COM_SPORTSMANAGER_DOUBLE_SEED="Elo-Startwert Doppel"
COM_SPORTSMANAGER_PLAYER_EXPORT="Spieler: Exportieren"
@@ -500,6 +502,8 @@ COM_SPORTSMANAGER_WIN_1_POINT="Sieg: 1 Punkt"
COM_SPORTSMANAGER_WIN_2_POINTS="Sieg: 2 Punkte, Unentschieden: 1 Punkt"
COM_SPORTSMANAGER_WIN_3_POINTS="Sieg: 3 Punkte, Unentschieden: 1 Punkt"
COM_SPORTSMANAGER_MEETING_CONCLUDED_AT="Begegnung abgeschlossen bei"
COM_SPORTSMANAGER_GAMES_IN_STATISTIK="Spiele in Spielerstatistik"
COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL="Alle Spiele"
COM_SPORTSMANAGER_GENERALLY="Allgemein"
COM_SPORTSMANAGER_TYPE="Typ"
COM_SPORTSMANAGER_ELO_MIN="Elo min."
@@ -550,9 +554,22 @@ COM_SPORTSMANAGER_NO_RATING="Keine Wertung"
COM_SPORTSMANAGER_TEAM_COMPETITIONS="Mannschaftswettbewerbe"
COM_SPORTSMANAGER_TABLE_SUMMARY="Tabellenwertung"
COM_SPORTSMANAGER_HEAD_TO_HEAD_RECORD="Direkter Vergleich"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_NOT="deaktiviert"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS="bei gleicher Punktzahl"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS="bei gleicher Punktzahl, Satzpunkte"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS="bei gleicher Punktzahl, Satzpunkte, Tore"
COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz"
COM_SPORTSMANAGER_PERFORMANCE_INDEX="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..."
COM_SPORTSMANAGER_PERFORMANCE_INDEX0="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz"
COM_SPORTSMANAGER_PERFORMANCE_INDEX1="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..."
COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Leistungsindex (S * P+ * 10) / (P+ + P-), Spielpunkte gewonnen, ..."
COM_SPORTSMANAGER_PERFORMANCE_INDEX3="Race Performance Index (Siege*2 + Unentschieden + Tordifferenz)"
COM_SPORTSMANAGER_PERFORMANCE_INDEX4="Effizienzindex (T+ / (T+ + T-))"
COM_SPORTSMANAGER_PERFORMANCE_INDEX5="Punkteschnitt (P+ / Anzahl Sätze)"
COM_SPORTSMANAGER_PERFORMANCE_SHORT1="LI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT2="LI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT3="RPI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT4="EI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVG"
COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS="Einzelstatistik aus allen Spielen"
COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES="Einzelstatistik aus Einzel-Spielen"
COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES="Einzelstatistik aus Doppel-Spielen"
@@ -1072,6 +1089,7 @@ COM_SPORTSMANAGER_MATCH_SWAPPING_HELP="Bei Heimrechttausch gleichen Termin eintr
COM_SPORTSMANAGER_NOT_VALID_TIME="Ung&uuml;ltige Uhrzeit"
COM_SPORTSMANAGER_REALLY_MATCH_RESCHEDULING="Willst Du diesen Spielverlegung wirklich entfernen?"
COM_SPORTSMANAGER_REST_DAYS="Ruhetage"
COM_SPORTSMANAGER_ADDITIONAL_INFO="Zusatzinfo"
COM_SPORTSMANAGER_TRAINING_DAYS="Trainingstage"
COM_SPORTSMANAGER_NOT_ACTUALIZED_DATA="Nicht aktualisierte Daten"
COM_SPORTSMANAGER_ASSOCIATION_BODIES="Verbandsorgane"
@@ -1092,4 +1110,18 @@ COM_SPORTSMANAGER_MATCH_TYPE="Spielform"
COM_SPORTSMANAGER_REALLY_REMOVE_HALL_OF_FAME_YEAR="Willst Du wirklich dieses Hall of Fame Jahr l&ouml;schen?"
COM_SPORTSMANAGER_YEARS="Jahre"
COM_SPORTSMANAGER_ADD_HALL_OF_FAME_YEAR="Hall of Fame Jahr hinzuf&uuml;gen"
COM_SPORTSMANAGER_HALL_OF_FAME_TITLE_COUNT="Anzahl"
COM_SPORTSMANAGER_HALL_OF_FAME_TITLES="Titel"
COM_SPORTSMANAGER_HALL_OF_FAME_TEAM_PLAYERS="Mannschaftsspieler"
COM_SPORTSMANAGER_HALL_OF_FAME_NOT_HELD="Nicht ausgespielt"
COM_SPORTSMANAGER_NO_ENTRY="kein Eintrag"
COM_SPORTSMANAGER_REALLY_SWAP_MATCH="Willst Du wirklich das Heimrecht tauschen?"
COM_SPORTSMANAGER_SWAP_MATCH="Heimrechttausch"
COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="Der Spielbericht wird zusammen mit allen historischen Eintr&auml;gen gel&ouml;scht. Willst du den Spielbericht wirklich l&ouml;schen?"
COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Spielbericht gel&ouml;scht"
COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="Der Spielbericht wurde erfolgreich gel&ouml;scht!"
COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur"
COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele"
COM_SPORTSMANAGER_SELECT_ALL="Alle"
COM_SPORTSMANAGER_MAIL_SEND_ERROR="Die Benachrichtigungs-E-Mail zum Ergebnis konnte nicht versendet werden."
COM_SPORTSMANAGER_TERMIN_MAIL_SEND_ERROR="Mindestens eine Benachrichtigungs-E-Mail zum Termin konnte nicht versendet werden."
@@ -157,6 +157,7 @@ COM_SPORTSMANAGER_DEFEAT="Defeat"
COM_SPORTSMANAGER_DEFEATS="Defeats"
COM_SPORTSMANAGER_DEFEATS_SHORTCUT="F"
COM_SPORTSMANAGER_GOALS="Goals"
COM_SPORTSMANAGER_GOALS_SHORTCUT="G"
COM_SPORTSMANAGER_SETS="Sets"
COM_SPORTSMANAGER_POINT="Point"
COM_SPORTSMANAGER_POINTS="Points"
@@ -169,9 +170,9 @@ COM_SPORTSMANAGER_GAME_POINTS="Game points"
COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="GP"
COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (one team)"
COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (teams together)"
COM_SPORTSMANAGER_DIFFERENCE="Difference"
COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Difference in points"
COM_SPORTSMANAGER_POINTS_RATIO="Points ratio"
COM_SPORTSMANAGER_DIFFERENCE="Goal difference"
COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Difference in game points"
COM_SPORTSMANAGER_POINTS_RATIO="Game points ratio"
COM_SPORTSMANAGER_SCHEDULE_DATE="Appointment date"
COM_SPORTSMANAGER_TEAM_HOME="Home"
COM_SPORTSMANAGER_TEAM_VISITOR="Visitor"
@@ -296,10 +297,9 @@ COM_SPORTSMANAGER_REQUEST_MESSAGE_PLURAL="At least %d dates must be given comple
COM_SPORTSMANAGER_REJECT_SHIFT="Reject shift"
COM_SPORTSMANAGER_TO="until"
COM_SPORTSMANAGER_PLAYER_STATISTICS="Player statistics"
COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="PI"
COM_SPORTSMANAGER_WON="won"
COM_SPORTSMANAGER_LOST="lost"
COM_SPORTSMANAGER_RATE="Rate"
COM_SPORTSMANAGER_RATE="Winning rate"
COM_SPORTSMANAGER_RATE_SHORTCUT="R"
COM_SPORTSMANAGER_NO_CLUB="No club"
COM_SPORTSMANAGER_RATING="Rating"
@@ -395,6 +395,8 @@ COM_SPORTSMANAGER_BEATEN="Excreted"
COM_SPORTSMANAGER_HIDE="Hide"
COM_SPORTSMANAGER_PASSIVE="Passive"
COM_SPORTSMANAGER_BEATEN_CLUB="Club excreted"
COM_SPORTSMANAGER_ACTIVE_CLUBS="Active clubs"
COM_SPORTSMANAGER_INACTIVE_CLUBS="Inactive clubs"
COM_SPORTSMANAGER_SINGLE_SEED="Elo starting value singles"
COM_SPORTSMANAGER_DOUBLE_SEED="Elo starting value doubles"
COM_SPORTSMANAGER_PLAYER_EXPORT="Players: Export"
@@ -500,6 +502,8 @@ COM_SPORTSMANAGER_WIN_1_POINT="Win: 1 point"
COM_SPORTSMANAGER_WIN_2_POINTS="Win: 2 points, draw: 1 point"
COM_SPORTSMANAGER_WIN_3_POINTS="Win: 3 points, draw: 1 point"
COM_SPORTSMANAGER_MEETING_CONCLUDED_AT="Match won at"
COM_SPORTSMANAGER_GAMES_IN_STATISTIK="Games in player statistics"
COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL="All games"
COM_SPORTSMANAGER_GENERALLY="Generally"
COM_SPORTSMANAGER_TYPE="Type"
COM_SPORTSMANAGER_ELO_MIN="Elo min."
@@ -550,9 +554,22 @@ COM_SPORTSMANAGER_NO_RATING="No rating"
COM_SPORTSMANAGER_TEAM_COMPETITIONS="Team competitions"
COM_SPORTSMANAGER_TABLE_SUMMARY="Table rating"
COM_SPORTSMANAGER_HEAD_TO_HEAD_RECORD="Head-to-head record"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_NOT="Off"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS="Tie: pts"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS="Tie: pts, set points"
COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS="Tie: pts, set points, goals"
COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE="Game points won, game points lost, point difference"
COM_SPORTSMANAGER_PERFORMANCE_INDEX="Performance index (GP+ * GP+ * 100) / (GP+ + GP-), game points won, ..."
COM_SPORTSMANAGER_PERFORMANCE_INDEX0="Game points won, game points lost, point difference"
COM_SPORTSMANAGER_PERFORMANCE_INDEX1="Performance index (GP+ * GP+ * 100) / (GP+ + GP-), game points won, ..."
COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Performance index (games * P+ * 10) / (P+ + P-), game points won, ..."
COM_SPORTSMANAGER_PERFORMANCE_INDEX3="Race Performance Index (victories*2 + draws + goal difference)"
COM_SPORTSMANAGER_PERFORMANCE_INDEX4="Efficency index (G+ / (G+ + G-))"
COM_SPORTSMANAGER_PERFORMANCE_INDEX5="Set point average (P+ / count sets)"
COM_SPORTSMANAGER_PERFORMANCE_SHORT1="LI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT2="LI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT3="RPI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT4="EI"
COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVG"
COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS="Individual statistics of all games"
COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES="Individual statistics of singles games"
COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES="Individual statistics of doubles games"
@@ -1072,6 +1089,7 @@ COM_SPORTSMANAGER_MATCH_SWAPPING_HELP="If home advantage is swapped, enter the s
COM_SPORTSMANAGER_NOT_VALID_TIME="Not valid time"
COM_SPORTSMANAGER_REALLY_MATCH_RESCHEDULING="Do you really want to remove this match rescheduling?"
COM_SPORTSMANAGER_REST_DAYS="Rest days"
COM_SPORTSMANAGER_ADDITIONAL_INFO="Additional info"
COM_SPORTSMANAGER_TRAINING_DAYS="Training days"
COM_SPORTSMANAGER_NOT_ACTUALIZED_DATA="Data not updated"
COM_SPORTSMANAGER_ASSOCIATION_BODIES="Association bodies"
@@ -1092,4 +1110,18 @@ COM_SPORTSMANAGER_MATCH_TYPE="Game Type"
COM_SPORTSMANAGER_REALLY_REMOVE_HALL_OF_FAME_YEAR="Are you sure you want to delete this Hall of Fame year?"
COM_SPORTSMANAGER_YEARS="Years"
COM_SPORTSMANAGER_ADD_HALL_OF_FAME_YEAR="Add Hall of Fame Year"
COM_SPORTSMANAGER_HALL_OF_FAME_TITLE_COUNT="Number"
COM_SPORTSMANAGER_HALL_OF_FAME_TITLES="Titles"
COM_SPORTSMANAGER_HALL_OF_FAME_TEAM_PLAYERS="Team Players"
COM_SPORTSMANAGER_HALL_OF_FAME_NOT_HELD="Not held"
COM_SPORTSMANAGER_NO_ENTRY="no entry"
COM_SPORTSMANAGER_REALLY_SWAP_MATCH="Do you really want to swap the home advantage?"
COM_SPORTSMANAGER_SWAP_MATCH="Swap home advantage"
COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="The match report and all its history will be deleted. Are you sure you want to delete the match report?"
COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Match report deleted"
COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="The match report has been successfully deleted!"
COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Match report corrected"
COM_SPORTSMANAGER_MIN_MATCHES="Min count matches"
COM_SPORTSMANAGER_SELECT_ALL="All"
COM_SPORTSMANAGER_MAIL_SEND_ERROR="The notification e-mail for the result could not be sent."
COM_SPORTSMANAGER_TERMIN_MAIL_SEND_ERROR="At least one notification e-mail for the appointment could not be sent."
+12 -1
View File
@@ -94,6 +94,12 @@ return new class () implements InstallerScriptInterface
return false;
}
if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-n.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'n.png', 180, 240, 1)) {
Log::add('Image /components/com_sportsmanager/images/spieler-n.png could not be copied to /images/sportsmanager/spieler/n.png', Log::ERROR);
echo '<p>Fehler: Bild spieler-n.png konnte nicht nach /images/sportsmanager/spieler/n.png verschoben werden</p>';
return false;
}
}
$adapter->getParent()->setRedirectURL('index.php?option=com_sportsmanager');
return true;
@@ -526,6 +532,7 @@ return new class () implements InstallerScriptInterface
. "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0',"
. "\n `spieler_id` int(11) NOT NULL DEFAULT '0',"
. "\n `spieler_2_id` int(11) DEFAULT NULL,"
. "\n `team_id` INT(11) DEFAULT NULL,"
. "\n `siege` smallint(6) DEFAULT NULL,"
. "\n `unentschieden` smallint(6) DEFAULT NULL,"
. "\n `niederlagen` smallint(6) DEFAULT NULL,"
@@ -673,6 +680,7 @@ return new class () implements InstallerScriptInterface
. "\n `telefon` varchar(64) DEFAULT NULL,"
. "\n `email` varchar(64) DEFAULT NULL,"
. "\n `ruhetage` varchar(64) DEFAULT NULL,"
. "\n `zusatzinfo` text DEFAULT NULL,"
. "\n `beschreibung` varchar(500) DEFAULT NULL,"
. "\n `status` tinyint(1) NOT NULL DEFAULT '0',"
. "\n PRIMARY KEY (`spielort_id`)"
@@ -789,6 +797,7 @@ return new class () implements InstallerScriptInterface
. "\n `spielpunkte_bedingung` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `spielernamen` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `heimtausch` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `spiele_in_spielerstatistik` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `modus` varchar(200) NOT NULL DEFAULT '',"
. "\n `status` tinyint(4) NOT NULL DEFAULT '0',"
. "\n PRIMARY KEY (`teamspiel_modus_id`)"
@@ -1249,9 +1258,11 @@ return new class () implements InstallerScriptInterface
. "\n `mitglied_halloffame_id` int(11) NOT NULL AUTO_INCREMENT,"
. "\n `halloffame_id` int(11) NOT NULL,"
. "\n `jahr` int(4) DEFAULT NULL,"
. "\n `nicht_ausgespielt` tinyint(1) NOT NULL DEFAULT '0',"
. "\n `platz` int(11) DEFAULT NULL,"
. "\n `verein_id` int(11) DEFAULT NULL,"
. "\n `teamname` varchar(64) DEFAULT NULL,"
. "\n `teamspieler` text DEFAULT NULL,"
. "\n `spieler1_id` int(11) DEFAULT NULL,"
. "\n `spieler1` varchar(64) DEFAULT NULL,"
. "\n `spieler2_id` int(11) DEFAULT NULL,"
@@ -1272,7 +1283,7 @@ return new class () implements InstallerScriptInterface
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '119';";
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '121';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }