# DokuWiki Calendar Plugin - Matrix Edition v4.0.0 A powerful, feature-rich calendar plugin with **Matrix theme**, live system monitoring, real-time weather, **Outlook sync**, and advanced event management. **Version**: 4.0.0 **Release Date**: February 6, 2026 **Codename**: Matrix Edition --- ## 🌟 Key Features ### 📅 Multiple Views - **Sidebar Widget** - Compact week view with live stats (recommended) - **Full Calendar** - Traditional month grid with event panel - **Event Panel** - Standalone event management - **Event List** - Flexible date range displays ### 🎨 Matrix Theme - **Authentic Aesthetics** - Green glow effects throughout - **Single Color Bars** - Clean 3px bars showing event color - **Dark Backgrounds** - #1a1a1a, rgba(36, 36, 36) - **Live Updates** - Clock, weather, system stats ### 💻 Sidebar Widget Features - **Interactive Week Grid** - Click any day to view events - **Live System Monitoring** - CPU load, real-time CPU, memory usage - **Hover Tooltips** - Detailed stats (load averages, top processes) - **Real-time Weather** - Geolocation-based temperature - **Live Clock** - Updates every second - **Event Sections** - Today (orange), Tomorrow (green), Important (purple) - **Add Event Button** - Dark green bar opens full event dialog ### ⚡ Event Management - **All-Day Events First** - Then sorted chronologically by time - **Conflict Detection** - Orange ⚠ badge on overlapping events - **Rich Content** - Full DokuWiki formatting (**bold**, [[links]], //italic//) - **Single Color Bars** - Clean design with event's assigned color - **AJAX Operations** - Create, edit, delete without page reload - **Draggable Dialogs** - Professional event forms ### 🔄 Outlook Integration - **Bi-directional Sync** - DokuWiki ↔ Microsoft Outlook calendars - **Category Mapping** - Map DokuWiki colors to Outlook categories - **Azure AD Authentication** - Secure OAuth 2.0 - **Import/Export Config** - Encrypted configuration files ### 🛠️ Admin Interface - **Update Plugin Tab** (default) - Version info, changelog, Clear Cache button - **Outlook Sync Tab** - Azure configuration, category mapping - **Manage Events Tab** - Browse, edit, delete, move events --- ## 📥 Installation ### 1. Extract Plugin ```bash cd /path/to/dokuwiki/lib/plugins/ unzip calendar-matrix-edition-v4.0.0.zip ``` ### 2. Set Permissions ```bash mkdir -p data/meta/calendar chmod -R 775 data/meta/calendar chown -R www-data:www-data data/meta/calendar ``` ### 3. Clear Cache 1. Go to **Admin → Calendar Management** 2. Click **🗑️ Clear Cache** button (orange, prominent) 3. Refresh your wiki page --- ## 🎯 Usage ### Sidebar Widget (Recommended) Display the Matrix-themed sidebar widget: ``` {{calendar sidebar}} ``` **Features**: - Current week grid (7 days, clickable) - Live system stats (CPU, memory) - Real-time weather with temperature - Live clock - Today/Tomorrow/Important event sections - Dark green Add Event button **With Namespace**: ``` {{calendar sidebar namespace=team}} ``` ### Full Calendar Traditional month view with event panel: ``` {{calendar}} ``` **Specific Month**: ``` {{calendar year=2026 month=6}} ``` **With Namespace**: ``` {{calendar namespace=team}} ``` ### Event Panel Only Display just the event management panel (320px wide): ``` {{eventpanel}} ``` Perfect for page sidebars. ### Event List Display events in a simple list: ``` {{eventlist date=2026-02-06}} ``` **Date Range**: ``` {{eventlist daterange=2026-01-01:2026-01-31}} ``` **With Namespace**: ``` {{eventlist daterange=2026-01-01:2026-01-31 namespace=team}} ``` --- ## 📝 Creating Events ### Method 1: Sidebar Widget Add Event Button 1. Click the **+ ADD EVENT** dark green bar 2. Event dialog opens 3. Fill in event details 4. Click **Save** ### Method 2: Click Week Grid Day 1. Click any day in the week grid 2. View existing events 3. Click **+ Add** button if desired 4. Fill in event details 5. Click **Save** ### Method 3: Full Calendar 1. Click **+ Add** button in event panel 2. Fill in event details 3. Click **Save** ### Event Fields **Required**: - **Date** - YYYY-MM-DD format - **Title** - Event name (supports **bold**, [[links]], //italic//) **Optional**: - **Time** - HH:MM format (24-hour) - leave blank for all-day - **End Time** - HH:MM format (for duration) - **Color** - Choose from picker or enter hex code - **Category** - For organization - **Description** - Full DokuWiki formatting supported ### DokuWiki Formatting Events support full DokuWiki syntax: ``` **Meeting with [[team:bob|Bob]]** Discuss: * Project timeline * //Budget review// * [[projects:alpha|Project Alpha]] status ``` Renders with proper HTML formatting including clickable links. --- ## 👀 Viewing Events ### Sidebar Widget **Week Grid**: - 7 days displayed (current week) - Event count badges on days with events - Click any day → View all events (expandable section) - Events sorted: All-day first, then by time **Today Section** (Orange): - All events happening today - Sorted: All-day first, then chronologically **Tomorrow Section** (Green): - All events happening tomorrow - Same sorting as Today **Important Events Section** (Purple): - Future events from "important" namespace - Configurable in Outlook Sync settings ### Clicked Day Events When you click a day in the week grid: ``` Monday, Feb 5 ├─ [Green] All Day - Project Deadline ├─ [Blue] 8:00 AM - Morning Standup ├─ [Orange] 10:30 AM - Coffee with Bob ⚠ └─ [Purple] 2:00 PM - Team Meeting ``` **Features**: - **Single color bar** (3px) - Event's assigned color - **Conflict badge** - ⚠ appears on right if event overlaps - **Sorting** - All-day events FIRST, then chronological --- ## ⚙️ System Monitoring ### Live Stats in Sidebar **Green Bar** (5-min CPU Load): ``` Hover to see: CPU Load Average 1-min: 2.45 5-min: 2.12 15-min: 1.98 Uptime: 5 days, 3 hours ``` **Purple Bar** (Real-time CPU): ``` Hover to see: CPU Load (Short-term) Current: 25.3% Top Processes: 1. apache2 (8.2%) 2. mysql (6.1%) 3. php-fpm (4.5%) ``` **Orange Bar** (Memory Usage): ``` Hover to see: Memory Usage Total: 16.0 GB Used: 8.2 GB (51%) Available: 7.8 GB Top Processes: 1. mysql (2.1 GB) 2. apache2 (1.3 GB) 3. php-fpm (845 MB) ``` **Update Frequency**: - Stats: Every 2 seconds - Weather: Every 10 minutes - Clock: Every second --- ## 🌤️ Weather Display - **Geolocation-based** temperature - **Fallback**: Irvine, CA (33.6846, -117.8265) - **Updates**: Every 10 minutes - **Display**: Icon + temperature (e.g., "🌤️ 72°") --- ## 🔄 Outlook Sync Setup ### Prerequisites 1. Microsoft Azure account 2. Registered application in Azure Portal 3. Calendar permissions granted ### Configuration Steps 1. **Register Azure App**: - Go to https://portal.azure.com - Navigate to App Registrations - Create new registration - Note: Tenant ID, Client ID 2. **Create Client Secret**: - In your app, go to Certificates & secrets - Create new client secret - Copy the secret value (shown once!) 3. **Configure Permissions**: - Add API permissions: - Calendars.ReadWrite - Calendars.ReadWrite.Shared - Grant admin consent 4. **Enter in DokuWiki**: - Admin → Calendar Management → Outlook Sync - Enter Tenant ID, Client ID, Client Secret - Enter your email address - Select timezone - Configure sync settings - Click **Save Configuration** 5. **Test Sync**: - Create event in DokuWiki - Run sync (cron job or manual) - Check Outlook calendar - Create event in Outlook - Run sync - Check DokuWiki calendar ### Sync Behavior **DokuWiki → Outlook**: - New events created in Outlook - Updates sync to existing events - Deletes sync if "Delete Outlook events" enabled **Outlook → DokuWiki**: - New events created in DokuWiki - Updates sync to existing events - Category colors mapped to DokuWiki colors **Conflict Resolution**: Last-write-wins --- ## 🎨 Color Scheme ### Section Colors - **Today**: Orange #ff9800 - **Tomorrow**: Green #4caf50 - **Important Events**: Purple #9b59b6 - **Add Event Bar**: Dark green #006400 ### System Bars - **Green Bar**: 5-min CPU load average - **Purple Bar**: Real-time CPU usage - **Orange Bar**: Real-time memory usage ### Event Colors - **Default**: Matrix Green #00cc07 - **Custom**: User-assigned color (via color picker) --- ## 🛠️ Admin Interface ### Access Go to **Admin → Calendar Management** ### Tabs #### 1. 📦 Update Plugin (Default Tab) **Features**: - Current version and date - Author information - Installation path - Permission check - **🗑️ Clear Cache** button (prominent orange) - Recent changelog (last 10 versions) **Clear Cache**: - Click orange button - Confirm dialog - Clears all DokuWiki cache - **Use after every plugin update!** #### 2. ⚙️ Outlook Sync **Azure Configuration**: - Tenant ID - Client ID - Client Secret - User Email - Timezone **Sync Settings**: - Default category - Reminder minutes - Sync completed tasks (checkbox) - Delete Outlook events (checkbox) - Important namespaces (comma-separated) **Category Mapping**: - Map DokuWiki colors to Outlook categories - Visual color picker **Buttons**: - **📤 Export Config** - Download encrypted config - **📥 Import Config** - Upload encrypted config - **Save Configuration** #### 3. 📅 Manage Events **Features**: - Browse all events across all namespaces - Filter by namespace - Search events - Edit event details - Delete events - Move events between dates/namespaces --- ## 📂 File Structure ### Event Storage ``` data/meta/calendar/2026-02.json data/meta/team/calendar/2026-02.json ``` ### Event JSON Format ```json { "2026-02-06": [ { "id": "evt_abc123", "title": "**Team Meeting**", "title_html": "Team Meeting", "time": "14:00", "end_time": "15:00", "description": "Discuss //timeline//", "description_html": "Discuss timeline", "color": "#3498db", "category": "Meetings", "namespace": "team", "created": "2026-02-05 10:00:00", "modified": "2026-02-05 10:30:00", "conflict": false } ] } ``` ### Fields Explained - **id**: Unique identifier (auto-generated) - **title**: Raw DokuWiki syntax - **title_html**: Pre-rendered HTML for JavaScript - **time**: Start time (HH:MM, 24-hour) - **end_time**: End time (optional) - **description**: Raw DokuWiki syntax - **description_html**: Pre-rendered HTML - **color**: Hex color code - **category**: Category name - **namespace**: Calendar namespace - **created**: Timestamp - **modified**: Last modified timestamp - **conflict**: Boolean - time conflict detected --- ## 🐛 Troubleshooting ### Events Not Displaying **Check 1**: Clear cache - Admin → Calendar Management - Click **🗑️ Clear Cache** - Confirm and refresh page **Check 2**: File permissions ```bash ls -la data/meta/calendar/ # Should show www-data:www-data ownership # Should show 775 permissions # Fix if needed: chown -R www-data:www-data data/meta/calendar/ chmod -R 775 data/meta/calendar/ ``` **Check 3**: Check JSON validity ```bash cat data/meta/calendar/2026-02.json # Should be valid JSON ``` ### Color Bars Not Showing **Solution**: 1. Clear browser cache (Ctrl+Shift+R) 2. Clear DokuWiki cache (admin button) 3. Verify plugin version is 4.0.0 ### Tooltips Not Working **Solution**: 1. Verify JavaScript is enabled 2. Clear cache 3. Check console for errors 4. Update to version 4.0.0 ### Weather Shows "--°" **Solution**: 1. Clear cache 2. Allow geolocation in browser 3. Wait 10 seconds for initial update 4. Check console for errors ### Add Event Button Doesn't Work **Solution**: 1. Check browser console for errors 2. Verify calendar-main.js loaded 3. Clear cache 4. Update to version 4.0.0 ### Outlook Sync Not Working **Check 1**: Azure credentials - Verify Tenant ID, Client ID, Client Secret - Check app permissions in Azure Portal - Ensure admin consent granted **Check 2**: Cron job ```bash # Check cron is running crontab -l # Should show: */15 * * * * /usr/bin/php /path/to/dokuwiki/lib/plugins/calendar/sync_outlook.php ``` --- ## 📊 Performance ### Optimizations - **Event Caching**: JSON files cached per month - **Lazy Loading**: Events loaded on demand - **AJAX Updates**: No full page reloads - **Minimal DOM**: Only visible events rendered ### Recommended Limits - **Events per month**: < 500 (no performance issues) - **Events per day**: < 50 (UI remains clean) - **Namespaces**: Unlimited (loaded separately) - **Event description**: < 500 characters (for readability) --- ## 🔐 Security ### Data Storage - Events stored server-side in JSON - No client-side storage used - File permissions protect data ### Outlook Sync - Credentials encrypted in config file - OAuth 2.0 authentication - Secrets never logged or displayed ### Admin Access - Requires DokuWiki admin permissions - All actions logged - CSRF protection on forms --- ## 📱 Browser Support | Browser | Version | Status | |---------|---------|--------| | Chrome | 90+ | ✅ Full | | Firefox | 88+ | ✅ Full | | Safari | 14+ | ✅ Full | | Edge | 90+ | ✅ Full | | Mobile | Modern | ⚠️ Limited (sidebar scrollable) | **Required Features**: - Flexbox - Fetch API - ES6 JavaScript - CSS Grid --- ## 🆘 Support ### Documentation - `CHANGELOG.md` - Full version history - `RELEASE_NOTES_v4.0.0.txt` - v4.0 details - `OUTLOOK_SYNC_SETUP.md` - Detailed sync guide - `QUICK_REFERENCE.md` - Syntax quick reference ### Getting Help 1. Check this README first 2. Review CHANGELOG for recent changes 3. Clear cache after updates 4. Check browser console for errors 5. Verify file permissions --- ## 📄 License GPL 2.0 --- ## ✨ What's New in v4.0.0 ### Major Changes from v3.x - ✅ **Single color bars** (removed dual bars) - ✅ **All-day events first** (reversed sorting) - ✅ **Add Event dialog** in sidebar widget - ✅ **Perfect spacing** throughout - ✅ **Matrix Edition** official naming - ✅ **Production ready** - all bugs resolved ### Breaking Changes - Dual color bars removed (now single bar only) - All-day events now appear FIRST (not last) - Update Plugin tab is now default (not Config) ### Bug Fixes - Fixed color bars rendering (align-self:stretch) - Fixed tooltip function naming - Fixed weather display - Fixed HTML rendering in events - Fixed Add Event dialog - Fixed spacing throughout --- ## 🎯 Quick Start Examples ### Personal Calendar ``` ====== My Schedule ====== {{calendar sidebar namespace=personal}} **Quick Add**: Click the dark green "+ ADD EVENT" bar ``` ### Team Dashboard ``` ====== Development Team ====== {{calendar sidebar namespace=team:dev}} **System Stats**: Hover over colored bars for details **Today's Events**: Automatically displayed below calendar ``` ### Project Timeline ``` ====== Project Alpha ====== {{calendar namespace=projects:alpha year=2026 month=3}} **Milestones**: * [[projects:alpha:kickoff|Mar 1 - Kickoff]] * [[projects:alpha:design|Mar 15 - Design Review]] * [[projects:alpha:launch|Mar 31 - Launch]] ``` --- ## 🎉 Credits **Author**: atari911 **Email**: atari911@gmail.com **Version**: 4.0.0 **Date**: February 6, 2026 **Special Features**: - Matrix theme design - Outlook synchronization - System monitoring integration - Real-time weather display - Advanced event conflict detection --- ## 🚀 Final Notes **Version 4.0.0 - Matrix Edition** represents a complete, production-ready calendar plugin with: - ✨ Beautiful Matrix-themed design - 💻 Live system monitoring - 🌤️ Real-time weather - 📅 Advanced event management - 🔄 Enterprise Outlook sync - 🎨 Polished UI throughout **Install it, clear cache, and enjoy your Matrix calendar!** 🎉 --- **Happy Calendaring! 🗓️✨**