Add the Chronological

This commit is contained in:
2026-02-16 13:39:26 +01:00
parent c091ed1371
commit f1ac693fe8
162 changed files with 25868 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ luxtools provides DokuWiki syntax that:
- Embeds file-backed scratchpads with a minimal inline editor (no wiki revisions)
- Links a page to a media folder via a UUID (.pagelink), enabling a `blobs/` alias
- Adds a Page ID download link in the page info area to fetch a `.pagelink` file
- Renders a basic calendar widget with clickable day links to chronological pages
It also ships a small file-serving endpoint (`lib/plugins/luxtools/file.php`) used
to deliver files and generate cached thumbnails.
@@ -49,6 +50,13 @@ If you install this plugin manually, make sure it is installed in:
If the folder is called differently, DokuWiki will not load it.
This plugin uses Composer dependencies shipped inside `vendor/`.
If dependencies are missing in your local checkout, run:
```bash
php composer.phar install
```
## Project structure (developer notes)
@@ -149,6 +157,20 @@ Key settings:
URL of a local client service used by `{{open>...}}` and directory links.
See luxtools-client.
- **image_base_path**
Base filesystem path used for chronological photo integration.
On canonical day pages (`chronological:YYYY:MM:DD`), files that start with
`YYYY-MM-DD` are listed automatically.
If a yearly subfolder exists (for example `.../2026/`), it is preferred.
- **calendar_ics_files**
Local calendar `.ics` files (one absolute file path per line).
Events are parsed by `sabre/vobject` and shown on matching chronological day pages.
Recurrence and exclusions from the ICS are respected. For timed entries, the
page stores the original timestamp and renders the visible time in the
browser's local timezone.
Multi-day events appear on each overlapping day.
- **pagelink_search_depth**
Maximum directory depth for `.pagelink` discovery under each configured root.
`0` means only the root directory itself is checked.
@@ -246,6 +268,38 @@ for example:
{{directory>blobs/&recursive=1}}
```
### 0.3) Calendar widget
Render a basic monthly calendar that links each day to canonical chronological pages:
```
{{calendar>}}
{{calendar>2024-10}}
```
Notes:
- `{{calendar>}}` renders the current month.
- `{{calendar>YYYY-MM}}` renders a specific month.
- Day links target `chronological:YYYY:MM:DD`.
- Header month/year links target `chronological:YYYY:MM` and `chronological:YYYY`.
- Prev/next month buttons update the widget in-place without a full page reload.
- Month switches fetch server-rendered widget HTML via AJAX and replace only the widget node.
### 0.4) Virtual chronological day pages
When a canonical day page (for example `chronological:2026:02:13`) does not yet
exist, luxtools renders a virtual page in normal show mode instead of the
default "page does not exist" output.
The virtual page includes:
- a German-formatted heading (for example `Freitag, 13. Februar 2026`)
- matching local calendar events from configured `.ics` files (when available)
- matching day photos (via existing `{{images>...}}` rendering) when available
The page is only created once you edit and save actual content.
### 1) List files by glob pattern
The `{{directory>...}}` syntax (or `{{files>...}}` for backwards compatibility) can handle both directory listings and glob patterns. When a glob pattern is used, it renders as a table: