Update project documentation
This commit is contained in:
1
.github/copilot-instructions.md
vendored
1
.github/copilot-instructions.md
vendored
@@ -6,6 +6,7 @@
|
|||||||
- Do not use `phpunit` There are missing dependencies that make it fail.
|
- Do not use `phpunit` There are missing dependencies that make it fail.
|
||||||
- Use `php -l <file>` to check for syntax errors.
|
- Use `php -l <file>` to check for syntax errors.
|
||||||
- Consider The official documentation for writing dokuwiki plugins: https://www.dokuwiki.org/devel:plugins
|
- Consider The official documentation for writing dokuwiki plugins: https://www.dokuwiki.org/devel:plugins
|
||||||
|
- Whenever necessary, update the README file to reflect new features or changes.
|
||||||
|
|
||||||
|
|
||||||
# General instructions
|
# General instructions
|
||||||
|
|||||||
223
README
223
README
@@ -1,49 +1,206 @@
|
|||||||
luxtools plugin for DokuWiki
|
luxtools (DokuWiki plugin)
|
||||||
|
=========================
|
||||||
|
|
||||||
Lists files matching a given glob pattern.
|
luxtools is a suite of tools designed to integrate the host file system with
|
||||||
|
DokuWiki, intentionally sidestepping the built-in MediaManager for specific
|
||||||
|
workflows.
|
||||||
|
|
||||||
All documentation for this plugin can be found at
|
This is a personal project that models my specific workflows and preferences.
|
||||||
https://www.dokuwiki.org/plugin:luxtools
|
It is likely unsuited for wider adoption without modification.
|
||||||
|
|
||||||
If you install this plugin manually, make sure it is installed in
|
|
||||||
lib/plugins/luxtools/ - if the folder is called different it
|
|
||||||
will not work!
|
|
||||||
|
|
||||||
Syntax:
|
Related projects
|
||||||
{{files>...}}
|
----------------
|
||||||
|
|
||||||
Scratchpad (shared, file-backed, no page revisions):
|
- luxtools-client: https://git.luxick.de/luxick/luxtools-client
|
||||||
{{scratchpad>...}}
|
A client application for direct integration with the client machine
|
||||||
|
(e.g. opening folders/paths from within the browser).
|
||||||
|
- luxtools-template: https://git.luxick.de/luxick/luxtools-template
|
||||||
|
A DokuWiki template designed to complement the features of this plugin.
|
||||||
|
|
||||||
The scratchpad is resolved via the "scratchpad_paths" setting.
|
|
||||||
|
|
||||||
Each scratchpad entry is a full filesystem path to a file (including extension),
|
What this plugin does
|
||||||
followed by an alias line that defines the pad name used in the wiki.
|
---------------------
|
||||||
|
|
||||||
Example:
|
luxtools provides DokuWiki syntax that:
|
||||||
/var/lib/dokuwiki-scratchpads/startpad.txt
|
|
||||||
A> start
|
|
||||||
|
|
||||||
Then use:
|
- Lists files from configured host filesystem roots (glob pattern)
|
||||||
|
- Lists a directory's direct children (files + folders)
|
||||||
|
- Renders an image thumbnail gallery (with lightbox)
|
||||||
|
- Provides "open this folder/path" links for local workflows
|
||||||
|
- Embeds file-backed scratchpads with a minimal inline editor (no wiki revisions)
|
||||||
|
|
||||||
|
It also ships a small file-serving endpoint (lib/plugins/luxtools/file.php) used
|
||||||
|
to deliver files and generate/cached thumbnails.
|
||||||
|
|
||||||
|
|
||||||
|
Important security note
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The file-serving endpoint is designed for convenience and caching and does NOT
|
||||||
|
apply DokuWiki ACLs. Anything reachable through a configured root may be
|
||||||
|
accessible to anyone who can access your wiki and guess/copy the generated URLs.
|
||||||
|
|
||||||
|
Only configure roots that contain non-sensitive data, or protect access on the
|
||||||
|
webserver/network level.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
Install like any other DokuWiki plugin.
|
||||||
|
|
||||||
|
If you install this plugin manually, make sure it is installed in:
|
||||||
|
|
||||||
|
lib/plugins/luxtools/
|
||||||
|
|
||||||
|
If the folder is called differently, DokuWiki will not load it.
|
||||||
|
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
|
||||||
|
luxtools is configured via its dedicated admin page:
|
||||||
|
|
||||||
|
Admin -> Additional Plugins -> luxtools
|
||||||
|
|
||||||
|
Key settings:
|
||||||
|
|
||||||
|
- paths
|
||||||
|
Allowed base filesystem roots (one per line). Each root can be followed by:
|
||||||
|
- A> /Alias/ (optional) alias used in wiki syntax and open links
|
||||||
|
- W> https://... (optional) web base URL used for links instead of file.php
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
/srv/share/Datascape/
|
||||||
|
A> /Scape/
|
||||||
|
W> https://files.example.example/Datascape/
|
||||||
|
|
||||||
|
If no W> line is configured, luxtools links will use the plugin endpoint:
|
||||||
|
|
||||||
|
lib/plugins/luxtools/file.php?root=...&file=...
|
||||||
|
|
||||||
|
- scratchpad_paths
|
||||||
|
Scratchpad file map (one file path per line, followed by an A> alias line).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/var/lib/dokuwiki-scratchpads/startpad.txt
|
||||||
|
A> start
|
||||||
|
|
||||||
|
- defaults
|
||||||
|
Default inline options appended to each listing call.
|
||||||
|
|
||||||
|
- extensions
|
||||||
|
Comma-separated list of file extensions allowed in listings.
|
||||||
|
Leave empty to allow all.
|
||||||
|
|
||||||
|
- thumb_placeholder
|
||||||
|
MediaManager ID used as a placeholder image in the gallery (optional).
|
||||||
|
|
||||||
|
- gallery_thumb_scale
|
||||||
|
Multiplier for generated thumbnails (1 = 150x150, 2 = 300x300), while still
|
||||||
|
displaying them as 150x150. Useful for HiDPI screens.
|
||||||
|
|
||||||
|
- open_service_url
|
||||||
|
URL of a local client service used by {{open>...}} and directory links.
|
||||||
|
See luxtools-client.
|
||||||
|
|
||||||
|
|
||||||
|
Features and usage
|
||||||
|
------------------
|
||||||
|
|
||||||
|
1) List files by glob pattern
|
||||||
|
```
|
||||||
|
{{files>/Scape/projects/*&style=list}}
|
||||||
|
{{files>/Scape/projects/*&style=table&tableheader=1&showsize=1&showdate=1}}
|
||||||
|
{{files>/Scape/projects/*&recursive=1&sort=mtime&order=desc}}
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- Pattern matching is performed per-directory (safe glob via fnmatch).
|
||||||
|
- A directory can have a title file (default: _title.txt) to override the
|
||||||
|
displayed folder name.
|
||||||
|
|
||||||
|
2) List a directory (folders + files) as a table
|
||||||
|
```
|
||||||
|
{{directory>/Scape/projects/&tableheader=1&foldersfirst=1&sort=name}}
|
||||||
|
```
|
||||||
|
This always renders as a table. It includes an "Open Location" link above the
|
||||||
|
table when rendered as XHTML.
|
||||||
|
|
||||||
|
3) Image gallery with thumbnails + lightbox
|
||||||
|
```
|
||||||
|
{{images>/Scape/photos/2025/*}}
|
||||||
|
{{images>/Scape/photos/2025/*&recursive=1}}
|
||||||
|
```
|
||||||
|
Clicking a thumbnail opens a lightbox viewer. Thumbnails are generated and
|
||||||
|
cached via the plugin endpoint.
|
||||||
|
|
||||||
|
4) Open a local path/folder (best-effort)
|
||||||
|
```
|
||||||
|
{{open>/Scape/projects|Open projects folder}}
|
||||||
|
{{open>/home/me/notes|Open local folder}}
|
||||||
|
{{open>file:///home/me/notes|Open via file://}}
|
||||||
|
```
|
||||||
|
Behaviour:
|
||||||
|
- Prefer calling the configured local client service (open_service_url).
|
||||||
|
- Fall back to opening a file:// URL in a new tab (often blocked by browsers).
|
||||||
|
|
||||||
|
5) Scratchpads (shared, file-backed, no page revisions)
|
||||||
|
```
|
||||||
{{scratchpad>start}}
|
{{scratchpad>start}}
|
||||||
|
```
|
||||||
|
Scratchpads render the referenced file as wikitext and (when you have edit
|
||||||
|
rights on the host page) provide an inline editor that saves directly to the
|
||||||
|
backing file.
|
||||||
|
|
||||||
Please refer to http://www.dokuwiki.org/extensions for additional info
|
|
||||||
on how to install extensions in DokuWiki.
|
|
||||||
|
|
||||||
Development deploy helpers:
|
Inline options reference (files/images/directory)
|
||||||
- Linux/macOS: ./deploy.sh
|
-------------------------------------------------
|
||||||
- Windows (PowerShell + WSL): .\deploy.ps1
|
|
||||||
|
|
||||||
----
|
The listing syntaxes accept options appended with &key=value:
|
||||||
Copyright (C) Gina Häußge, Dokufreaks <gina@foosel.net, freaks@dokuwiki.org>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
| Option | Values | Notes |
|
||||||
it under the terms of the GNU General Public License as published by
|
|---|---|---|
|
||||||
the Free Software Foundation; version 2 of the License
|
| recursive | 0\|1 | Recurse into subdirectories. |
|
||||||
|
| sort | name\|iname\|ctime\|mtime\|size | Sort key. |
|
||||||
|
| order | asc\|desc | Sort order. |
|
||||||
|
| foldersfirst | 0\|1 | Group folders before files (useful for tables). |
|
||||||
|
| titlefile | _title.txt | Directory title override file name. |
|
||||||
|
| cache | 0\|1 | 0 disables page caching (default). |
|
||||||
|
| randlinks | 0\|1 | Adds a cache-busting query parameter based on mtime. |
|
||||||
|
| showsize | 0\|1 | Show file size (where supported). |
|
||||||
|
| showdate | 0\|1 | Show last modified date (where supported). |
|
||||||
|
| listsep | ", " | Separator used in list-style rendering for extra fields. |
|
||||||
|
| maxheight | 500 | Container max-height in pixels; -1 disables scroll container. |
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
Additionally for {{files>...}}:
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
See the LICENSING file for details
|
| Option | Values | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| style | list\|olist\|table | Output style. |
|
||||||
|
| tableheader | 0\|1 | Render table header row. |
|
||||||
|
|
||||||
|
|
||||||
|
Credits / upstream
|
||||||
|
------------------
|
||||||
|
|
||||||
|
luxtools is a fork of the [DokuWiki Filelist plugin](https://www.dokuwiki.org/plugin:filelist)
|
||||||
|
|
||||||
|
Upstream authors and contributors include Gina Häußge and the DokuWiki
|
||||||
|
community (Dokufreaks).
|
||||||
|
|
||||||
|
This fork keeps the original license (GPL-2) and retains the relevant copyright
|
||||||
|
notices in the source.
|
||||||
|
|
||||||
|
|
||||||
|
Development helpers
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
- Linux/macOS: ./deploy.sh
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
GPL-2. See COPYING / LICENSE.
|
||||||
|
|||||||
BIN
lang/de/lang.php
BIN
lang/de/lang.php
Binary file not shown.
Binary file not shown.
@@ -25,9 +25,9 @@ $lang['saved'] = 'Settings saved.';
|
|||||||
$lang['err_save'] = 'Could not save settings. Please check write permissions for conf/local.php.';
|
$lang['err_save'] = 'Could not save settings. Please check write permissions for conf/local.php.';
|
||||||
$lang['err_security'] = 'Security token mismatch. Please retry.';
|
$lang['err_security'] = 'Security token mismatch. Please retry.';
|
||||||
|
|
||||||
$lang['paths'] = 'Allowed base paths (one per line or comma-separated).';
|
$lang['paths'] = 'Allowed base paths (one per line). Optional: follow a path with A> alias and W> web URL.';
|
||||||
$lang['scratchpad_paths'] = 'Scratchpad files (one per line). Each file path must include the extension. Use a following A> line to set the pad name used in the wiki.';
|
$lang['scratchpad_paths'] = 'Scratchpad files (one per line). Each file path must include the extension. Use a following A> line to set the pad name used in the wiki.';
|
||||||
$lang['allow_in_comments'] = 'Whether to allow the files syntax to be used in comments.';
|
$lang['allow_in_comments'] = 'Whether to allow luxtools syntax (files/images/directory/scratchpad) to be used in comments.';
|
||||||
$lang['defaults'] = 'Default options. Use the same syntax as in inline configuration.';
|
$lang['defaults'] = 'Default options. Use the same syntax as in inline configuration.';
|
||||||
$lang['extensions'] = 'Comma-separated list of allowed file extensions to list.';
|
$lang['extensions'] = 'Comma-separated list of allowed file extensions to list.';
|
||||||
$lang['thumb_placeholder'] = 'MediaManager ID for the gallery thumbnail placeholder.';
|
$lang['thumb_placeholder'] = 'MediaManager ID for the gallery thumbnail placeholder.';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$lang['paths'] = 'Allowed base paths (one per line or comma-separated).';
|
$lang['paths'] = 'Allowed base paths (one per line). Optional: follow a path with A> alias and W> web URL.';
|
||||||
$lang['scratchpad_paths'] = 'Scratchpad files (one per line). Each file path must include the extension; use a following A> line to set the pad name used in the wiki.';
|
$lang['scratchpad_paths'] = 'Scratchpad files (one per line). Each file path must include the extension; use a following A> line to set the pad name used in the wiki.';
|
||||||
$lang['allow_in_comments'] = 'Whether to allow the files syntax to be used in comments.';
|
$lang['allow_in_comments'] = 'Whether to allow luxtools syntax (files/images/directory/scratchpad) to be used in comments.';
|
||||||
$lang['defaults'] = 'Default options. Use the same syntax as in inline configuration';
|
$lang['defaults'] = 'Default options. Use the same syntax as in inline configuration';
|
||||||
$lang['extensions'] = 'Comma-separated list of allowed file extensions to list';
|
$lang['extensions'] = 'Comma-separated list of allowed file extensions to list';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
base luxtools
|
base luxtools
|
||||||
author Gina Häußge, Dokufreaks, luxick
|
author luxick
|
||||||
email dokuwiki@luxick.de
|
email dokuwiki@luxick.de
|
||||||
date 2026-01-05
|
date 2026-01-05
|
||||||
name luxtools
|
name luxtools
|
||||||
desc Lists files matching a given glob pattern.
|
desc Integrates host filesystem with DokuWiki (files, directories, images, open links, scratchpads).
|
||||||
url https://www.dokuwiki.org/plugin:luxtools
|
url https://www.dokuwiki.org/plugin:luxtools
|
||||||
|
|||||||
Reference in New Issue
Block a user