Summary
Right now every .zip file in the Files app picks up the eXeLearning icon, not just .elpx packages. The icon should only apply to actual eXeLearning files — driven by extension (.elp legacy, .elpx modern) — and plain .zip files should fall back to Nextcloud's default archive icon.
Bonus ask: if Nextcloud lets us, give legacy .elp files a slightly different icon (a badge, a muted variant, anything visually distinguishable) so users can spot at a glance that the file is from an older eXeLearning version (see #20 for the migration path).
Root cause (suspected)
The current mapping registered by make up and documented in the README is:
{ "elpx": ["application/vnd.exelearning.elpx", "application/zip"] }
That part is fine — it only tags .elpx files. The problem appears when config/mimetypealiases.json aliases application/zip (or some equivalent) to the exelearning icon: every zip in Nextcloud then inherits the icon. The alias should be on application/vnd.exelearning.elpx only, not on application/zip.
(Confirming the exact source is part of the implementation work — the symptom is reproducible: upload any unrelated .zip and it gets the eXeLearning icon in the Files list.)
Desired behavior
.elpx → eXeLearning icon (current behavior, keep it).
.elp → eXeLearning icon, ideally with a distinguishing mark (badge, faded colour, "legacy" overlay) so users see it differs from .elpx.
.zip → Nextcloud's default archive icon. Unchanged from a vanilla Nextcloud install.
- Anything else → untouched.
Acceptance criteria
Notes / implementation hints
- Nextcloud's icon system is extension → MIME → icon name. The chain to inspect:
config/mimetypemapping.json (extension → MIME) — what make up writes.
config/mimetypealiases.json (MIME → icon-name) — likely the source of the over-broad icon, if it aliases application/zip.
img/<name>.svg shipped by the app — the actual icon assets.
- If content-based detection (zip sniffing) inside the icon path isn't feasible (Nextcloud renders icons from MIME alone), going by extension alone is acceptable:
.elp/.elpx get the eXeLearning icon, .zip does not. That matches what the user expects.
- For the legacy badge, options:
- Ship a second SVG (
img/elp-legacy.svg) and alias application/x-exelearning-legacy (or whatever MIME we settle on for .elp) to it.
- Or one SVG with an inline
<text>v2</text> overlay if we want to avoid a second asset.
Summary
Right now every
.zipfile in the Files app picks up the eXeLearning icon, not just.elpxpackages. The icon should only apply to actual eXeLearning files — driven by extension (.elplegacy,.elpxmodern) — and plain.zipfiles should fall back to Nextcloud's default archive icon.Bonus ask: if Nextcloud lets us, give legacy
.elpfiles a slightly different icon (a badge, a muted variant, anything visually distinguishable) so users can spot at a glance that the file is from an older eXeLearning version (see #20 for the migration path).Root cause (suspected)
The current mapping registered by
make upand documented in the README is:{ "elpx": ["application/vnd.exelearning.elpx", "application/zip"] }That part is fine — it only tags
.elpxfiles. The problem appears whenconfig/mimetypealiases.jsonaliasesapplication/zip(or some equivalent) to theexelearningicon: every zip in Nextcloud then inherits the icon. The alias should be onapplication/vnd.exelearning.elpxonly, not onapplication/zip.(Confirming the exact source is part of the implementation work — the symptom is reproducible: upload any unrelated
.zipand it gets the eXeLearning icon in the Files list.)Desired behavior
.elpx→ eXeLearning icon (current behavior, keep it)..elp→ eXeLearning icon, ideally with a distinguishing mark (badge, faded colour, "legacy" overlay) so users see it differs from.elpx..zip→ Nextcloud's default archive icon. Unchanged from a vanilla Nextcloud install.Acceptance criteria
.zipto Files. It shows the default archive icon, not the eXeLearning icon..elpxand a legacy.elp. Both show eXeLearning-themed icons, visibly distinguishable from each other.make down && make up(it must be done by something the app installs, not a manual config edit by the user).Notes / implementation hints
config/mimetypemapping.json(extension → MIME) — whatmake upwrites.config/mimetypealiases.json(MIME → icon-name) — likely the source of the over-broad icon, if it aliasesapplication/zip.img/<name>.svgshipped by the app — the actual icon assets..elp/.elpxget the eXeLearning icon,.zipdoes not. That matches what the user expects.img/elp-legacy.svg) and aliasapplication/x-exelearning-legacy(or whatever MIME we settle on for.elp) to it.<text>v2</text>overlay if we want to avoid a second asset.