# Admin PHP Integration - File Structure

## Complete Directory Structure

```
multilingual-press-zone/
│
├── multilingual-press-zone.php          # Main plugin file
│
├── includes/
│   ├── Admin/                           # ✅ NEW Admin Controllers
│   │   ├── AssetLoader.php              # Centralized asset loading
│   │   ├── DashboardController.php      # Dashboard page controller
│   │   ├── LanguagesController.php      # Languages page controller
│   │   ├── LicensingController.php      # Licensing page controller
│   │   ├── MenuController.php           # Menu registration & routing
│   │   ├── SettingsController.php       # Settings page controller
│   │   └── TranslationsController.php   # Translations page controller
│   │
│   ├── Core/
│   │   ├── Plugin.php                   # 🔄 UPDATED Main plugin class
│   │   ├── Database.php
│   │   ├── LanguageManager.php
│   │   ├── ContentManager.php
│   │   ├── CacheManager.php
│   │   ├── QueryOptimizer.php
│   │   └── Migrations.php
│   │
│   ├── Frontend/                        # ✅ NEW Frontend Components
│   │   └── LanguageSwitcher.php         # Language switcher widget
│   │
│   ├── Entities/
│   │   ├── Language.php
│   │   ├── Translation.php
│   │   └── Traits/
│   │       └── Timestamps.php
│   │
│   └── Migrations/
│       └── Migration001SeedDefaultLanguage.php
│
├── admin/
│   ├── dist/
│   │   ├── js/
│   │   │   ├── runtime.js               # Common admin bundle
│   │   │   ├── main.js                  # Page-specific bundle
│   │   │   └── *.js.map
│   │   └── css/
│   │       └── admin.css                # ✅ NEW Compiled admin styles
│   │
│   ├── src/                             # Vanilla JS source files
│   │   ├── main.ts
│   │   ├── components/
│   │   └── styles/
│   │
│   └── Documentation/                   # ✅ NEW Documentation
│       ├── ADMIN-INTEGRATION-VERIFICATION.md
│       ├── INTEGRATION-QUICK-START.md
│       ├── P1-44-TO-P1-46-COMPLETE.md
│       ├── TESTING-CHECKLIST.md
│       └── FILE-STRUCTURE.md            # This file
│
└── languages/                           # Translation files (future)
    └── multilingual-press-zone.pot
```

## File Purposes

### Admin Controllers (`includes/Admin/`)

| File | Purpose | Key Methods |
|------|---------|-------------|
| `AssetLoader.php` | Centralized asset management | `enqueue_admin_assets()`, `get_i18n_strings()` |
| `MenuController.php` | Menu registration & routing | `add_menu_pages()`, `render_*()` |
| `DashboardController.php` | Dashboard page logic | `render()`, `enqueue_assets()` |
| `LanguagesController.php` | Language management UI | `render()`, `get_available_languages()` |
| `TranslationsController.php` | Translation management UI | `render()`, `enqueue_assets()` |
| `SettingsController.php` | Plugin settings UI | `render()`, `get_settings_data()` |
| `LicensingController.php` | License activation UI | `render()`, `get_license_data()` |

### Core Integration (`includes/Core/`)

| File | Change | Description |
|------|--------|-------------|
| `Plugin.php` | Updated | Added admin initialization code |

### Frontend (`includes/Frontend/`)

| File | Purpose |
|------|---------|
| `LanguageSwitcher.php` | Frontend language selector shortcode |

### Assets (`admin/dist/`)

| File | Purpose |
|------|---------|
| `js/runtime.js` | Common admin code (all pages) |
| `js/main.js` | Page-specific bundles |
| `css/admin.css` | WordPress-compliant admin styles |

### Documentation (`admin/`)

| File | Purpose |
|------|---------|
| `ADMIN-INTEGRATION-VERIFICATION.md` | Complete technical verification |
| `INTEGRATION-QUICK-START.md` | Developer quick reference |
| `P1-44-TO-P1-46-COMPLETE.md` | Task completion summary |
| `TESTING-CHECKLIST.md` | Comprehensive testing guide |
| `FILE-STRUCTURE.md` | This file - directory structure |

## Code Flow

### Plugin Initialization
```
multilingual-press-zone.php
  → mpz_init()
  → Core\Plugin::instance()->init()
  → init_admin() (if is_admin())
  → MenuController::register()
  → AssetLoader::register()
```

### Menu Registration
```
MenuController::register()
  → add_action('admin_menu', add_menu_pages)
  → add_menu_page('Multilingual', ...)
  → add_submenu_page(...) x5
  → add_action('admin_enqueue_scripts', enqueue_page_assets)
```

### Page Rendering
```
User clicks menu
  → WordPress routes to controller
  → DashboardController::render()
  → Output: <div id="mpz-dashboard-root"></div>
  → WordPress fires admin_enqueue_scripts
  → AssetLoader::enqueue_admin_assets()
  → Load runtime.js + admin.css
  → Add window.mpzConfig
  → MenuController::enqueue_page_assets()
  → Load main.js
  → Add window.mpzDashboard
  → JavaScript renders UI
```

## Class Hierarchy

```
MultilingualPressZone\
├── Core\
│   └── Plugin (singleton)
│       ├── LanguageManager
│       ├── ContentManager
│       ├── CacheManager
│       └── QueryOptimizer
│
├── Admin\
│   ├── MenuController
│   │   ├── DashboardController
│   │   ├── LanguagesController
│   │   ├── TranslationsController
│   │   ├── SettingsController
│   │   └── LicensingController
│   └── AssetLoader
│
├── Frontend\
│   └── LanguageSwitcher
│
└── Entities\
    ├── Language
    └── Translation
```

## Dependencies

### PHP Dependencies
- PHP 8.3+
- WordPress 6.0+
- PSR-4 Autoloader

### JavaScript Dependencies
- WordPress REST API
- WordPress Media Uploader
- No external JS libraries required

### Asset Dependencies
```
admin/dist/js/runtime.js
  → Common code, loaded first

admin/dist/js/main.js
  → depends: runtime.js
  → Page-specific code

admin/dist/css/admin.css
  → No dependencies
  → WordPress admin compatible
```

## File Locations (Absolute Paths)

Based on current working directory: `/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin`

### Admin Controllers
```
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/AssetLoader.php
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/DashboardController.php
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/LanguagesController.php
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/LicensingController.php
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/MenuController.php
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/SettingsController.php
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Admin/TranslationsController.php
```

### Frontend
```
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/includes/Frontend/LanguageSwitcher.php
```

### Assets
```
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/dist/css/admin.css
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/dist/js/runtime.js
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/dist/js/main.js
```

### Documentation
```
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/ADMIN-INTEGRATION-VERIFICATION.md
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/INTEGRATION-QUICK-START.md
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/P1-44-TO-P1-46-COMPLETE.md
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/TESTING-CHECKLIST.md
/home/user/Projects/Press.zone/wordpress/wp-content/plugins/multilingual-press-zone/admin/FILE-STRUCTURE.md
```

---

**Generated:** 2026-01-26
**Status:** Complete and verified
