16 Commits
v0.2.0 ... main

Author SHA1 Message Date
ebdcf45f1c Merge pull request 'fix: always compute repo name [skip-ci] [release-patch]' (#24) from dev into main
Reviewed-on: #24
2025-11-19 19:11:34 +00:00
f76a8d2efc fix: always compute repo name
All checks were successful
Docker Build (PR) / Build Docker image (pull_request) Has been skipped
/ build (pull_request) Successful in 25m38s
2025-11-19 20:11:04 +01:00
c57ad0f355 Merge pull request 'style fix: add no cache option [skip-ci] [release-patch]' (#23) from dev into main
Reviewed-on: #23
2025-11-19 18:40:51 +00:00
51f5aefcaa fix: add no cache option
Some checks failed
Docker Build (PR) / Build Docker image (pull_request) Has been skipped
/ build (pull_request) Has been cancelled
2025-11-19 19:39:31 +01:00
febd0e8369 Merge pull request 'feat: update release workflow to auto create release based on PR [skip-ci]' (#22) from dev into main
Reviewed-on: #22
2025-11-19 18:25:56 +00:00
5c4a2a8ffc feat: update release workflow to auto create release based on PR
All checks were successful
Docker Build (PR) / Build Docker image (pull_request) Has been skipped
/ build (pull_request) Has been skipped
2025-11-19 19:24:55 +01:00
Gitea CI
b0672d7fde Bump version: 0.2.1 → 0.2.2 2025-11-19 18:06:39 +00:00
fa21264ef3 Merge pull request 'small bugfix and color change' (#21) from dev into main
Reviewed-on: #21
2025-11-19 17:59:28 +00:00
0f934a6671 chore: switch colors
All checks were successful
Docker Build (PR) / Build Docker image (pull_request) Successful in 4m55s
2025-11-19 18:57:22 +01:00
d697c3e268 fix: allow only one instance of mediatype to be present 2025-11-19 18:57:09 +01:00
Gitea CI
eb59f30b38 Bump version: 0.2.0 → 0.2.1 2025-11-19 17:38:18 +00:00
455a3b4115 Merge pull request 'style changes' (#20) from dev into main
Reviewed-on: #20
2025-11-19 17:31:07 +00:00
1ad010d079 feat: add background color to toast
All checks were successful
Docker Build (PR) / Build Docker image (pull_request) Successful in 5m7s
2025-11-19 18:30:36 +01:00
85ba0bf07c chore:
update csss: increase border by 50px
chore: add line break to names
chore: restyle the dateselector to use same design as other fields
2025-11-19 18:27:17 +01:00
c9f03b4f1f Merge pull request 'fix typo [skip-ci]' (#19) from dev into main
Reviewed-on: #19
2025-11-19 16:49:35 +00:00
36b968998e fix typo [skip-ci]
All checks were successful
Docker Build (PR) / Build Docker image (pull_request) Has been skipped
2025-11-19 17:49:20 +01:00
5 changed files with 77 additions and 17 deletions

View File

@@ -18,12 +18,39 @@ on:
- "major"
- "minor"
- "patch"
pull_request:
types: [closed]
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
# Only run on merged PRs with [release-*] or manual workflow_dispatch
if: |
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && github.event.pull_request.merged == true && contains(github.event.pull_request.title, '[release-'))
steps:
- name: Determine bump type
id: bump_type
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "type=${{ github.event.inputs.bump }}" >> $GITHUB_OUTPUT
else
# Extract bump type from PR title: [release-patch], [release-minor], [release-major]
PR_TITLE="${{ github.event.pull_request.title }}"
if [[ "$PR_TITLE" =~ \[release-major\] ]]; then
echo "type=major" >> $GITHUB_OUTPUT
elif [[ "$PR_TITLE" =~ \[release-minor\] ]]; then
echo "type=minor" >> $GITHUB_OUTPUT
elif [[ "$PR_TITLE" =~ \[release-patch\] ]]; then
echo "type=patch" >> $GITHUB_OUTPUT
else
echo "type=patch" >> $GITHUB_OUTPUT
fi
fi
- name: Checkout code
uses: actions/checkout@v4.2.2
with:
@@ -52,7 +79,7 @@ jobs:
id: bump
run: |
uv tool install bump-my-version
uv tool run bump-my-version bump ${{ github.event.inputs.bump }}
uv tool run bump-my-version bump ${{ steps.bump_type.outputs.type }}
# echo the version to github env, the version is shown by using uv tool run bump-my-version show current_version
echo "VERSION<<EOF" >> $GITHUB_ENV
echo "$(uv tool run bump-my-version show current_version)" >> $GITHUB_ENV
@@ -77,12 +104,12 @@ jobs:
echo "tag=$prev" >> "$GITHUB_OUTPUT"
- name: Compute lowercased image repo
if: ${{ github.event.inputs.docker_release == 'true' }}
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.docker_release == 'true' || github.event_name == 'pull_request' }}
run: |
echo "IMAGE_REPO=${{ secrets.REGISTRY }}/$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
- name: Docker meta
if: ${{ github.event.inputs.docker_release == 'true' }}
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.docker_release == 'true' || github.event_name == 'pull_request' }}
id: meta
uses: docker/metadata-action@v5
with:
@@ -92,12 +119,13 @@ jobs:
type=raw,value=${{ env.VERSION }}
- name: Build and push Docker image
if: ${{ github.event.inputs.docker_release == 'true' }}
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.docker_release == 'true' || github.event_name == 'pull_request' }}
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: true
no-cache: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
@@ -118,7 +146,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }}
- name: Create Gitea Release
if: ${{ github.event.inputs.github_release == 'true' }}
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.github_release == 'true' || github.event_name == 'pull_request' }}
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ env.VERSION }}

View File

@@ -89,7 +89,7 @@ body {
/* Layout */
.container {
max-width: 1200px;
max-width: 1250px;
margin: 0 auto;
padding: 0 20px;
}
@@ -165,6 +165,7 @@ h2 {
input[type="text"],
input[type="email"],
input[type="number"],
input[type="date"],
select,
textarea {
width: 100%;
@@ -178,6 +179,14 @@ textarea {
font-family: inherit;
}
/* Normalize date input appearance */
input[type="date"] {
-webkit-appearance: none;
appearance: none;
font-family: inherit;
/* Ensure text is legible and consistent */
}
textarea {
resize: vertical;
min-height: 80px;
@@ -231,6 +240,13 @@ input[type="radio"] { accent-color: var(--control-accent); }
}
[data-theme="dark"] .btn-secondary:hover { background: #1f2b3f; }
/* Generic disabled button state */
.btn:disabled {
opacity: 0.55;
cursor: not-allowed;
filter: grayscale(0.15);
}
.actions {
margin-top: 16px;
display: flex;
@@ -528,7 +544,8 @@ input[type="radio"] { accent-color: var(--control-accent); }
top: 20px;
right: 20px;
background: var(--card-bg);
border: 1px solid #22c55e;
border: 1px solid hsl(142, 82%, 30%);
background-color: hsl(142, 71%, 45%);
border-radius: 12px;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
padding: 16px 20px;

View File

@@ -84,7 +84,7 @@
</select>
</div>
<div class="form-field">
<label for="classname">Lehrveranstaltungsname</label>
<label for="classname">Veranstaltungsname</label>
<input type="text" name="classname" id="classname" required>
</div>
<div class="form-field">
@@ -103,13 +103,13 @@
<h2>Medien</h2>
<div class="media-controls">
<button type="button" class="btn btn-secondary" onclick="addMediaType('monografie')">
<button type="button" id="btn-monografie" class="btn btn-secondary" onclick="addMediaType('monografie')" title="Monografie Sektion hinzufügen">
<span class="mdi mdi-book"></span> + Monografie
</button>
<button type="button" class="btn btn-secondary" onclick="addMediaType('zeitschriftenartikel')">
<button type="button" id="btn-zeitschriftenartikel" class="btn btn-secondary" onclick="addMediaType('zeitschriftenartikel')" title="Zeitschriftenartikel Sektion hinzufügen">
<span class="mdi mdi-newspaper"></span> + Zeitschriftenartikel
</button>
<button type="button" class="btn btn-secondary" onclick="addMediaType('herausgeberwerk')">
<button type="button" id="btn-herausgeberwerk" class="btn btn-secondary" onclick="addMediaType('herausgeberwerk')" title="Herausgeberwerk Sektion hinzufügen">
<span class="mdi mdi-book-multiple"></span> + Herausgeberwerk
</button>
</div>
@@ -173,6 +173,9 @@
// Media management functions (global scope for onclick handlers)
function addMediaType(type) {
const btn = document.getElementById('btn-' + type);
// Prevent duplicate sections of same type
if (btn && btn.disabled) { return; }
const container = document.getElementById('media-sections');
const sectionId = 'section-' + sectionCounter++;
@@ -188,7 +191,7 @@
title = 'Monografie';
tableHtml = '<table class="data-table media-table" id="table-' + sectionId + '">' +
'<tr>' +
'<th>Autor (Nachname, Vorname)</th>' +
'<th>Autor<br>(Nachname, Vorname)</th>' +
'<th>Jahr</th>' +
'<th>Auflage</th>' +
'<th>Titel</th>' +
@@ -202,7 +205,7 @@
title = 'Zeitschriftenartikel';
tableHtml = '<table class="data-table media-table" id="table-' + sectionId + '">' +
'<tr>' +
'<th>Autor (Nachname, Vorname)</th>' +
'<th>Autor<br>(Nachname, Vorname)</th>' +
'<th>Jahr</th>' +
'<th>Band</th>' +
'<th>Titel des Artikels</th>' +
@@ -217,11 +220,11 @@
title = 'Herausgeberwerk';
tableHtml = '<table class="data-table media-table" id="table-' + sectionId + '">' +
'<tr>' +
'<th>Herausgeber (Nachname, Vorname)</th>' +
'<th>Herausgeber<br>(Nachname, Vorname)</th>' +
'<th>Titel des Werks</th>' +
'<th>Jahr</th>' +
'<th>Auflage</th>' +
'<th>Autor des Artikels (Nachname, Vorname)</th>' +
'<th>Autor des Artikels<br>(Nachname, Vorname)</th>' +
'<th>Titel des Artikels</th>' +
'<th>Signatur</th>' +
'<th>Seiten von</th>' +
@@ -243,6 +246,11 @@
'</button>';
container.appendChild(section);
// Disable button for this type until section removed
if (btn) {
btn.disabled = true;
btn.title = 'Sektion bereits hinzugefügt entfernen zum erneuten Hinzufügen';
}
// Add first row automatically
addMediaRow(sectionId, type);
@@ -314,6 +322,7 @@
const section = document.getElementById(sectionId);
if (section) {
if (confirm('Möchten Sie diese Sektion wirklich entfernen?')) {
const type = section.getAttribute('data-type');
// Clean up tracking for removed rows
const rows = section.querySelectorAll('tr[id]');
rows.forEach(row => {
@@ -323,6 +332,12 @@
}
});
section.remove();
// Re-enable button for this media type
const btn = document.getElementById('btn-' + type);
if (btn) {
btn.disabled = false;
btn.title = 'Sektion hinzufügen';
}
updateSubmitButton();
}
}

View File

@@ -1,6 +1,6 @@
[project]
name = "semapform"
version = "0.2.0"
version = "0.2.2"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
@@ -15,7 +15,7 @@ dependencies = [
]
[tool.bumpversion]
current_version = "0.2.0"
current_version = "0.2.2"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
serialize = ["{major}.{minor}.{patch}"]
search = "{current_version}"