Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
5609903
Merge branch 'feature/delete-old-timeline' into feature/timeline
martinyde Jan 21, 2026
76a1717
Added 1st attempt
martinyde Jan 22, 2026
bc44259
Added styling, html and css for timeline
martinyde Jan 22, 2026
9a8a9a1
Refactored timeline CSS to follow project conventions
yepzdk Jan 22, 2026
20c205f
Modernized timeline JavaScript to ES6+ syntax
yepzdk Jan 22, 2026
feed8f1
Apply Prettier formatting to mini-timeline.js
yepzdk Jan 22, 2026
0fcadd1
Use Bootstrap container widths instead of hardcoded px values
yepzdk Jan 23, 2026
9d53907
Merge pull request #594 from itk-dev/feature/timeline-css-optimization
yepzdk Jan 23, 2026
520fd6f
Merge pull request #595 from itk-dev/feature/timeline-js-optimization
yepzdk Jan 23, 2026
3ae66ee
Add implementation plan for timeline "I dag" card
yepzdk Jan 23, 2026
7991cbf
Update I dag card plan based on PR feedback
yepzdk Jan 23, 2026
7f5de99
Implement auto-generated "I dag" (Today) card for timeline
yepzdk Jan 23, 2026
5b1479a
Add demo status and hide empty title/description on today card
yepzdk Jan 23, 2026
af10963
Fix default view and remove upcoming card opacity
yepzdk Jan 23, 2026
b3722b4
Add shadow variables and apply consistently
yepzdk Jan 23, 2026
0993cbe
Added data collection from drupal
martinyde Jan 23, 2026
0d7e1bb
Merge branch 'feature/timeline-conversion2' of github.com:itk-dev/del…
martinyde Jan 23, 2026
52c2094
Merge branch 'feature/timeline-conversion2' into feature/timeline-tod…
martinyde Jan 23, 2026
8c659a0
Merge pull request #596 from itk-dev/feature/timeline-today-card
martinyde Jan 23, 2026
b35b956
Updated config for note and different types
martinyde Jan 26, 2026
083e843
Updated timeline and added show/hide timeline config
martinyde Jan 26, 2026
a6054a7
Added timeline fixtures with demo project
yepzdk Jan 26, 2026
71a44cc
Merge pull request #608 from itk-dev/feature/timeline-fixtures
martinyde Jan 27, 2026
dfcaf40
Updated presave function
martinyde Jan 27, 2026
720088d
Fix timeline horizontal view UI issues
yepzdk Jan 27, 2026
2dbc818
Fix multiple mini-nav dots highlighted when scrolling fast
yepzdk Jan 27, 2026
679ffe4
Add CLAUDE.md with project documentation for Claude Code
yepzdk Jan 27, 2026
eb73a96
Updated code comments
martinyde Jan 27, 2026
2df8a10
Merge branch 'feature/timeline-conversion2' into feature/timeline-fix…
martinyde Jan 27, 2026
fd32943
Merge pull request #612 from itk-dev/feature/timeline-fixes-after-imp…
martinyde Jan 27, 2026
ba4eb4d
Merge pull request #616 from itk-dev/chore/update-claude-md
martinyde Jan 27, 2026
1f9db12
Merge branch 'feature/timeline-conversion2' into fix/timeline-mini-na…
martinyde Jan 27, 2026
273d865
Merge pull request #615 from itk-dev/fix/timeline-mini-nav-multiple-dots
martinyde Jan 27, 2026
200a858
Added missing use statement
martinyde Jan 27, 2026
3aee561
Appleid coding standards
martinyde Jan 27, 2026
c82bb17
Updated npm package
martinyde Jan 27, 2026
5617c96
Applied code style
martinyde Jan 27, 2026
a7b67f4
Updated twig files to english, and added translation
martinyde Jan 27, 2026
0e9b517
Added project translation
martinyde Jan 27, 2026
e0e88b9
Updated changelog
martinyde Jan 27, 2026
79a5577
Add hover effect to reveal accent colors on upcoming timeline cards
yepzdk Jan 27, 2026
edae3d2
Merge pull request #619 from itk-dev/feature/issue-610-upcoming-hover…
martinyde Jan 27, 2026
8ddefdc
Add windowed dot navigation on mobile horizontal timeline
yepzdk Jan 27, 2026
fe5c653
Fix scaled dots being clipped on mobile windowed view
yepzdk Jan 27, 2026
a4c3ed0
Add mobile vertical view and default horizontal on mobile
yepzdk Jan 27, 2026
c6d353d
Merge pull request #620 from itk-dev/feature/issue-611-mobile-windowe…
yepzdk Jan 27, 2026
859080e
Add content-type accent colors and improve timeline fixtures
yepzdk Jan 27, 2026
357b28c
Remove duplicate accordion.js import
yepzdk Jan 27, 2026
d77eaf1
Merge pull request #621 from itk-dev/feature/issue-613-remove-duplica…
martinyde Jan 28, 2026
77bf934
Merge branch 'develop' into feature/timeline-conversion2
martinyde Jan 28, 2026
4eb3394
Updated translation
martinyde Jan 28, 2026
98ad277
Updated translations and fixed minor bugs in color display and capita…
martinyde Jan 28, 2026
38249fe
Updated timeline css
martinyde Jan 28, 2026
a3e0856
Updated translation
martinyde Jan 28, 2026
55b1512
Added fixture
martinyde Jan 28, 2026
5c043d3
Update config/sync/core.entity_form_display.node.dialogue.default.yml
martinyde Jan 29, 2026
1c7fe67
Update web/modules/custom/hoeringsportal_project/src/Helper/ProjectHe…
martinyde Jan 29, 2026
e11130b
Update config/sync/field.field.node.course.field_project_reference.yml
martinyde Jan 29, 2026
94f1ab6
Update web/modules/custom/hoeringsportal_project/src/Helper/ProjectHe…
martinyde Jan 29, 2026
86766a0
Fix mini-timeline navigation and scroll tracking issues
yepzdk Jan 28, 2026
91204b5
fix: resolve merge conflicts in ProjectMainPageFixture
yepzdk Feb 16, 2026
9777329
Merge branch 'develop' into feature/timeline-conversion2
martinyde Feb 25, 2026
746c56f
Applied coding standards
martinyde Feb 25, 2026
102c974
Updated translation
martinyde Feb 25, 2026
a9a68d2
Updated code after review
martinyde Feb 25, 2026
ffc91d1
Updated code
martinyde Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

* [PR-611](https://github.com/itk-dev/deltag.aarhus.dk/pull/611)
Added windowed dot navigation on mobile horizontal timeline view
* [PR-610](https://github.com/itk-dev/deltag.aarhus.dk/pull/610)
Added hover effect to reveal accent colors on upcoming timeline cards
* [PR-593](https://github.com/itk-dev/deltag.aarhus.dk/pull/593)
* Add project timeline
* Add project reference fields to several node types to display on timeline
* Add paragraph for adding custom elements to timeline
* Add CLAUDE.md file to project

## [4.15.0] - 2026-02-25

* [PR-590](https://github.com/itk-dev/deltag.aarhus.dk/pull/590)
Expand Down Expand Up @@ -37,6 +47,13 @@ Versioning](https://semver.org/spec/v2.0.0.html).
* [PR-591](https://github.com/itk-dev/deltag.aarhus.dk/pull/591)
* Cleaned up local OIDC setup
* Added test server OIDC setup
<<<<<<< HEAD
* [PR-590](https://github.com/itk-dev/deltag.aarhus.dk/pull/590)
Deleted old timeline.
=======

>>>>>>> develop

* [PR-587](https://github.com/itk-dev/deltag.aarhus.dk/pull/587)
Cleaned up translations
* [PR-586](https://github.com/itk-dev/hoeringsportal/pull/586)
Expand Down
160 changes: 160 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

Høringsportal (deltag.aarhus.dk) is a Drupal 10 civic engagement platform for Aarhus municipality.
It enables citizens to participate in public hearings, submit citizen proposals, attend public meetings,
and engage with local projects.

## Development Commands

This project uses [Task](https://taskfile.dev/) for all development workflows. Run `task` to see available commands.

### Essential Commands

```bash
# Initial setup (resets database)
task site-install

# Update existing installation
task site-update

# Build theme assets
task assets-build

# Watch for changes during development
task assets-watch

# Load test fixtures
task fixtures:load

# Run Drush commands
task drush -- <command>

# Access container
task compose -- exec phpfpm bash
```

### Code Quality

```bash
# Apply all coding standards (PHP, JS, CSS, Twig, YAML, Markdown)
task coding-standards:apply

# Check all coding standards
task coding-standards:check

# Static analysis (PHPStan)
task code-analysis

# Individual checks
task coding-standards:php:check
task coding-standards:twig:check
task coding-standards:javascript:check
task coding-standards:styles:check
```

### Testing

Playwright tests are located in `playwright/` directory:

```bash
docker compose --profile test run --rm playwright npx playwright test
```

## Architecture

### Directory Structure

- `web/modules/custom/` - Custom Drupal modules
- `web/themes/custom/hoeringsportal/` - Main theme (Bootstrap 5, Webpack Encore)
- `web/themes/custom/hoeringsportal_admin/` - Admin theme
- `config/sync/` - Drupal configuration

### Core Custom Modules

- **hoeringsportal_hearing** - Hearing (høring) content type and functionality
- **hoeringsportal_citizen_proposal** - Citizen proposal system with OpenID Connect authentication
- **hoeringsportal_public_meeting** - Public meetings with Pretix integration for ticketing
- **hoeringsportal_activity** - Extends public meetings to include other activity types
- **hoeringsportal_project** - Project content type for civic engagement projects
- **hoeringsportal_deskpro** - Deskpro helpdesk integration for hearing replies
- **hoeringsportal_data** - Data helpers and API endpoints
- **hoeringsportal_dialogue** - Dialogue/discussion features with comments
- **hoeringsportal_anonymous_edit** - Allow anonymous users to edit their submissions
- **hoeringsportal_openid_connect** - OpenID Connect authentication customizations

### External Integrations

- **Pretix** - Event ticketing for public meetings (docker-compose.pretix.yml)
- **Deskpro** - Helpdesk for hearing submissions
- **OpenID Connect** - Citizen authentication (docker-compose.oidc.yml)
- **ClamAV** - Virus scanning for uploads
- **Serviceplatformen** - Danish government services integration

### Theme Architecture

The theme uses Webpack Encore for asset building:

```bash
# Theme location
web/themes/custom/hoeringsportal/

# Build commands
npm install --prefix web/themes/custom/hoeringsportal
npm run build --prefix web/themes/custom/hoeringsportal
```

CSS uses SCSS with Bootstrap 5 and CSS custom properties for color management.

## Coding Standards

- PHP follows Drupal coding standards (phpcs.xml.dist)
- PHPStan level 0 for custom modules, level 9 for hoeringsportal_audit_log
- Twig uses twig-cs-fixer
- JavaScript and CSS use Prettier
- YAML uses Prettier

## Docker Services

Primary services (docker-compose.yml):

- phpfpm (PHP 8.3)
- nginx
- mariadb
- memcached
- mail (Mailpit)

Optional profiles:

- `pretix` - Event ticketing system
- `test` - Playwright testing
- `dev` - Code quality tools (markdownlint, prettier)

Start optional services:

```bash
PROFILES=pretix task compose -- up --detach
```

## Configuration

Local settings go in `web/sites/default/settings.local.php`.
Environment variables can be set in `.env.local`.

Key settings:

- `TASK_DOCKER_COMPOSE_PROFILES` - Docker profiles to auto-start
- `TASK_ASSETS_SKIP_BUILD` - Skip asset building on site-update

## Translations

Import custom translations:

```bash
task translations:import
```

Translation files are in `translations/` and managed via Drush locale commands.
4 changes: 2 additions & 2 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ includes:
- hoeringsportal_hearing
# - hoeringsportal_misc
# - hoeringsportal_openid_connect
# - hoeringsportal_project
- hoeringsportal_project
- hoeringsportal_public_meeting
- hoeringsportal_quicklinks
# - hoeringsportal_quicklinks
# - hoeringsportal_test_delta_sync_fixtures

- itk_admin
Expand Down
55 changes: 46 additions & 9 deletions config/sync/core.entity_form_display.node.course.default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ dependencies:
- field.field.node.course.field_content_state
- field.field.node.course.field_department
- field.field.node.course.field_first_meeting_time
- field.field.node.course.field_hide_in_timeline
- field.field.node.course.field_hide_time
- field.field.node.course.field_last_meeting_time
- field.field.node.course.field_map
- field.field.node.course.field_project_reference
- field.field.node.course.field_teaser
- field.field.node.course.field_top_images
- field.field.node.course.field_type
Expand All @@ -32,13 +34,14 @@ third_party_settings:
- field_first_meeting_time
- field_last_meeting_time
- field_hide_time
- group_project_reference
- field_department
- field_type
- field_area
label: Informationer
region: content
parent_name: ''
weight: 8
weight: 7
format_type: details
format_settings:
classes: ''
Expand All @@ -55,7 +58,24 @@ third_party_settings:
label: Lokation
region: content
parent_name: ''
weight: 3
weight: 4
format_type: details
format_settings:
classes: ''
show_empty_fields: false
id: ''
label_as_html: false
open: true
description: ''
required_fields: false
group_project_reference:
children:
- field_project_reference
- field_hide_in_timeline
label: 'Projekt reference'
region: hidden
parent_name: group_information
weight: 14
format_type: details
format_settings:
classes: ''
Expand Down Expand Up @@ -94,13 +114,13 @@ content:
third_party_settings: { }
field_area:
type: options_buttons
weight: 16
weight: 17
region: content
settings: { }
third_party_settings: { }
field_content_sections:
type: paragraphs
weight: 6
weight: 5
region: content
settings:
title: Paragraph
Expand All @@ -120,7 +140,7 @@ content:
third_party_settings: { }
field_department:
type: options_buttons
weight: 14
weight: 15
region: content
settings: { }
third_party_settings: { }
Expand All @@ -130,6 +150,13 @@ content:
region: content
settings: { }
third_party_settings: { }
field_hide_in_timeline:
type: boolean_checkbox
weight: 10
region: content
settings:
display_label: true
third_party_settings: { }
field_hide_time:
type: boolean_checkbox
weight: 13
Expand All @@ -145,17 +172,27 @@ content:
third_party_settings: { }
field_map:
type: hoeringsportal_data_map_default
weight: 7
weight: 6
region: content
settings:
available_types:
point: point
localplanids: 0
localplanids_node: 0
third_party_settings: { }
field_project_reference:
type: entity_reference_autocomplete
weight: 9
region: content
settings:
match_operator: CONTAINS
match_limit: 10
size: 60
placeholder: ''
third_party_settings: { }
field_teaser:
type: string_textarea
weight: 2
weight: 3
region: content
settings:
rows: 5
Expand All @@ -178,13 +215,13 @@ content:
third_party_settings: { }
field_type:
type: options_buttons
weight: 15
weight: 16
region: content
settings: { }
third_party_settings: { }
status:
type: boolean_checkbox
weight: 9
weight: 8
region: content
settings:
display_label: true
Expand Down
Loading
Loading