Files
rm2.pagedev.pl/.paul/phases/01-media-folders-plugin/01-01-SUMMARY.md
Jacek Pyziak 5014b9108f feat(media-folder-pro): add virtual folder system for WordPress media library
Custom WordPress plugin that replaces the default flat media library with
a structured folder view. Features: hierarchical folders via custom taxonomy,
sidebar folder tree, drag & drop, modal integration with Elementor/builders,
bulk assign, upload auto-assign, toast notifications.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 14:08:49 +01:00

127 lines
4.6 KiB
Markdown

---
phase: 01-media-folders-plugin
plan: 01
subsystem: media
tags: [wordpress, plugin, taxonomy, ajax, vanilla-js]
requires: []
provides:
- Custom taxonomy media_folder (hierarchical)
- AJAX CRUD endpoints for folder management
- Folder tree sidebar UI (vanilla JS)
affects: [02-media-library-grid, 03-media-modal]
tech-stack:
added: []
patterns: [custom taxonomy for virtual folders, MFP_ class prefix, vanilla JS UI]
key-files:
created:
- wp-content/plugins/media-folder-pro/media-folder-pro.php
- wp-content/plugins/media-folder-pro/includes/class-taxonomy.php
- wp-content/plugins/media-folder-pro/includes/class-ajax-handler.php
- wp-content/plugins/media-folder-pro/assets/css/admin.css
- wp-content/plugins/media-folder-pro/assets/js/folder-tree.js
modified: []
key-decisions:
- "Plugin renamed to media-folder-pro (user request)"
- "Author set to Project Pro (https://www.project-pro.pl)"
- "Vanilla JS instead of jQuery for tree UI"
- "MFP_ prefix for all classes and constants"
patterns-established:
- "MFP_Taxonomy centralizes all taxonomy operations"
- "MFP_Ajax_Handler with nonce + capability check on every endpoint"
- "Assets loaded only on upload.php and media-new.php"
- "CustomEvent 'mfp-folder-selected' for cross-component communication"
duration: ~15min
started: 2026-03-28
completed: 2026-03-28
---
# Phase 1 Plan 01: Plugin Foundation + Taxonomy Summary
**WordPress plugin "Media Folder Pro" with hierarchical media_folder taxonomy, 5 AJAX CRUD endpoints, and vanilla JS folder tree sidebar UI.**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~15min |
| Tasks | 3 completed |
| Files created | 5 |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Plugin aktywuje sie bez bledow | Pass | Plugin header, taxonomy registration, autoload — all correct |
| AC-2: CRUD folderow dziala przez AJAX | Pass | 5 endpoints with nonce verification + capability check |
| AC-3: Drzewko folderow renderuje sie poprawnie | Pass | Sidebar with tree, context menu, inline rename, expand/collapse |
## Accomplishments
- Custom taxonomy `media_folder` registered for `attachment` post type (hierarchical, hidden UI, REST enabled)
- 5 AJAX endpoints: create, rename, delete, move, get_folders — all with security checks
- Folder tree sidebar with context menu (right-click), inline rename, expand/collapse, active state
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `wp-content/plugins/media-folder-pro/media-folder-pro.php` | Created | Main plugin file — singleton, hooks, asset loading |
| `wp-content/plugins/media-folder-pro/includes/class-taxonomy.php` | Created | MFP_Taxonomy — register, get_folder_tree, folder_has_children, would_create_cycle |
| `wp-content/plugins/media-folder-pro/includes/class-ajax-handler.php` | Created | MFP_Ajax_Handler — 5 AJAX endpoints with validation |
| `wp-content/plugins/media-folder-pro/assets/css/admin.css` | Created | Sidebar layout, tree styles, context menu, responsive |
| `wp-content/plugins/media-folder-pro/assets/js/folder-tree.js` | Created | Vanilla JS folder tree — CRUD, context menu, inline edit |
## Decisions Made
| Decision | Rationale | Impact |
|----------|-----------|--------|
| Plugin renamed to media-folder-pro | User request | All references use MFP_ prefix |
| Author: Project Pro | User request | Plugin header and URI set |
| Vanilla JS (no jQuery) | Modern, no dependency | Simpler, lighter bundle |
| Empty-folder-only delete | Safety — prevent accidental data loss | Users must move content before deleting |
## Deviations from Plan
### Summary
| Type | Count | Impact |
|------|-------|--------|
| Scope changes | 1 | Plugin name change — no functional impact |
**Total impact:** Naming only, no functional deviation.
### Details
1. **Plugin renamed** from `rm2-media-folders` to `media-folder-pro` per user request during APPLY. All class prefixes changed from `RM2_Media_Folders_` to `MFP_`.
## Issues Encountered
None
## Next Phase Readiness
**Ready:**
- Taxonomy registered and operational
- AJAX infrastructure in place (all endpoints working)
- Folder tree UI renders with full CRUD
- `mfp-folder-selected` CustomEvent dispatched on folder click (Phase 2 hooks here)
- CSS sidebar pushes main content via `margin-left`
**Concerns:**
- Folder filtering not yet connected to WP media query (Phase 2 scope)
- Drag & drop not implemented (Phase 2 scope)
- No i18n .pot file generated yet (Phase 4)
**Blockers:**
- None
---
*Phase: 01-media-folders-plugin, Plan: 01*
*Completed: 2026-03-28*