1*5836612dSAtari911# DokuWiki Calendar Plugin - Matrix Edition v4.0.0 219378907SAtari911 3*5836612dSAtari911A powerful, feature-rich calendar plugin with **Matrix theme**, live system monitoring, real-time weather, **Outlook sync**, and advanced event management. 419378907SAtari911 5*5836612dSAtari911**Version**: 4.0.0 6*5836612dSAtari911**Release Date**: February 6, 2026 7*5836612dSAtari911**Codename**: Matrix Edition 819378907SAtari911 9231d0edbSAtari911--- 1019378907SAtari911 11231d0edbSAtari911## Key Features 1219378907SAtari911 13*5836612dSAtari911### Multiple Views 14*5836612dSAtari911- **Sidebar Widget** - Compact week view with live stats (recommended) 15231d0edbSAtari911- **Full Calendar** - Traditional month grid with event panel 16231d0edbSAtari911- **Event Panel** - Standalone event management 17231d0edbSAtari911- **Event List** - Flexible date range displays 1819378907SAtari911 19231d0edbSAtari911### Matrix Theme 20*5836612dSAtari911- **Authentic Aesthetics** - Green glow effects throughout 21*5836612dSAtari911- **Single Color Bars** - Clean 3px bars showing event color 22*5836612dSAtari911- **Dark Backgrounds** - #1a1a1a, rgba(36, 36, 36) 23*5836612dSAtari911- **Live Updates** - Clock, weather, system stats 24*5836612dSAtari911 25*5836612dSAtari911### Sidebar Widget Features 26*5836612dSAtari911- **Interactive Week Grid** - Click any day to view events 27*5836612dSAtari911- **Live System Monitoring** - CPU load, real-time CPU, memory usage 28*5836612dSAtari911- **Hover Tooltips** - Detailed stats (load averages, top processes) 29*5836612dSAtari911- **Real-time Weather** - Geolocation-based temperature 30231d0edbSAtari911- **Live Clock** - Updates every second 31*5836612dSAtari911- **Event Sections** - Today (orange), Tomorrow (green), Important (purple) 32*5836612dSAtari911- **Add Event Button** - Dark green bar opens full event dialog 3319378907SAtari911 34*5836612dSAtari911### ⚡ Event Management 35*5836612dSAtari911- **All-Day Events First** - Then sorted chronologically by time 36*5836612dSAtari911- **Conflict Detection** - Orange ⚠ badge on overlapping events 37*5836612dSAtari911- **Rich Content** - Full DokuWiki formatting (**bold**, [[links]], //italic//) 38*5836612dSAtari911- **Single Color Bars** - Clean design with event's assigned color 39*5836612dSAtari911- **AJAX Operations** - Create, edit, delete without page reload 40*5836612dSAtari911- **Draggable Dialogs** - Professional event forms 41231d0edbSAtari911 42*5836612dSAtari911### Outlook Integration 43*5836612dSAtari911- **Bi-directional Sync** - DokuWiki ↔ Microsoft Outlook calendars 44*5836612dSAtari911- **Category Mapping** - Map DokuWiki colors to Outlook categories 45*5836612dSAtari911- **Azure AD Authentication** - Secure OAuth 2.0 46*5836612dSAtari911- **Import/Export Config** - Encrypted configuration files 47*5836612dSAtari911 48*5836612dSAtari911### ️ Admin Interface 49*5836612dSAtari911- **Update Plugin Tab** (default) - Version info, changelog, Clear Cache button 50*5836612dSAtari911- **Outlook Sync Tab** - Azure configuration, category mapping 51231d0edbSAtari911- **Manage Events Tab** - Browse, edit, delete, move events 52231d0edbSAtari911 53231d0edbSAtari911--- 54231d0edbSAtari911 55231d0edbSAtari911## Installation 56231d0edbSAtari911 57231d0edbSAtari911### 1. Extract Plugin 5819378907SAtari911```bash 59231d0edbSAtari911cd /path/to/dokuwiki/lib/plugins/ 60*5836612dSAtari911unzip calendar-matrix-edition-v4.0.0.zip 6119378907SAtari911``` 6219378907SAtari911 63231d0edbSAtari911### 2. Set Permissions 64231d0edbSAtari911```bash 65231d0edbSAtari911mkdir -p data/meta/calendar 66231d0edbSAtari911chmod -R 775 data/meta/calendar 67231d0edbSAtari911chown -R www-data:www-data data/meta/calendar 68231d0edbSAtari911``` 6919378907SAtari911 70231d0edbSAtari911### 3. Clear Cache 71231d0edbSAtari9111. Go to **Admin → Calendar Management** 72*5836612dSAtari9112. Click **️ Clear Cache** button (orange, prominent) 73*5836612dSAtari9113. Refresh your wiki page 7419378907SAtari911 75231d0edbSAtari911--- 76231d0edbSAtari911 77231d0edbSAtari911## Usage 78231d0edbSAtari911 79*5836612dSAtari911### Sidebar Widget (Recommended) 80231d0edbSAtari911 81*5836612dSAtari911Display the Matrix-themed sidebar widget: 8219378907SAtari911 83231d0edbSAtari911``` 84231d0edbSAtari911{{calendar sidebar}} 85231d0edbSAtari911``` 8619378907SAtari911 87231d0edbSAtari911**Features**: 88*5836612dSAtari911- Current week grid (7 days, clickable) 89*5836612dSAtari911- Live system stats (CPU, memory) 90231d0edbSAtari911- Real-time weather with temperature 91*5836612dSAtari911- Live clock 92231d0edbSAtari911- Today/Tomorrow/Important event sections 93*5836612dSAtari911- Dark green Add Event button 9419378907SAtari911 95*5836612dSAtari911**With Namespace**: 96231d0edbSAtari911``` 97231d0edbSAtari911{{calendar sidebar namespace=team}} 98231d0edbSAtari911``` 99231d0edbSAtari911 100*5836612dSAtari911### Full Calendar 101*5836612dSAtari911 102*5836612dSAtari911Traditional month view with event panel: 103*5836612dSAtari911 104*5836612dSAtari911``` 105*5836612dSAtari911{{calendar}} 106*5836612dSAtari911``` 107*5836612dSAtari911 108*5836612dSAtari911**Specific Month**: 109*5836612dSAtari911``` 110*5836612dSAtari911{{calendar year=2026 month=6}} 111*5836612dSAtari911``` 112*5836612dSAtari911 113*5836612dSAtari911**With Namespace**: 114*5836612dSAtari911``` 115*5836612dSAtari911{{calendar namespace=team}} 116*5836612dSAtari911``` 117*5836612dSAtari911 118231d0edbSAtari911### Event Panel Only 119*5836612dSAtari911 120*5836612dSAtari911Display just the event management panel (320px wide): 121*5836612dSAtari911 12219378907SAtari911``` 12319378907SAtari911{{eventpanel}} 12419378907SAtari911``` 125*5836612dSAtari911 126*5836612dSAtari911Perfect for page sidebars. 12719378907SAtari911 128231d0edbSAtari911### Event List 129*5836612dSAtari911 130*5836612dSAtari911Display events in a simple list: 131*5836612dSAtari911 13219378907SAtari911``` 133*5836612dSAtari911{{eventlist date=2026-02-06}} 13419378907SAtari911``` 13519378907SAtari911 136231d0edbSAtari911**Date Range**: 13719378907SAtari911``` 13819378907SAtari911{{eventlist daterange=2026-01-01:2026-01-31}} 13919378907SAtari911``` 14019378907SAtari911 141231d0edbSAtari911**With Namespace**: 14219378907SAtari911``` 14319378907SAtari911{{eventlist daterange=2026-01-01:2026-01-31 namespace=team}} 14419378907SAtari911``` 14519378907SAtari911 146231d0edbSAtari911--- 14719378907SAtari911 148231d0edbSAtari911## Creating Events 14919378907SAtari911 150*5836612dSAtari911### Method 1: Sidebar Widget Add Event Button 151*5836612dSAtari911 152*5836612dSAtari9111. Click the **+ ADD EVENT** dark green bar 153*5836612dSAtari9112. Event dialog opens 154231d0edbSAtari9113. Fill in event details 15519378907SAtari9114. Click **Save** 15619378907SAtari911 157*5836612dSAtari911### Method 2: Click Week Grid Day 158*5836612dSAtari911 159*5836612dSAtari9111. Click any day in the week grid 160*5836612dSAtari9112. View existing events 161*5836612dSAtari9113. Click **+ Add** button if desired 162*5836612dSAtari9114. Fill in event details 163*5836612dSAtari9115. Click **Save** 164*5836612dSAtari911 165*5836612dSAtari911### Method 3: Full Calendar 166*5836612dSAtari911 167231d0edbSAtari9111. Click **+ Add** button in event panel 168231d0edbSAtari9112. Fill in event details 169231d0edbSAtari9113. Click **Save** 17019378907SAtari911 171231d0edbSAtari911### Event Fields 17219378907SAtari911 173231d0edbSAtari911**Required**: 174*5836612dSAtari911- **Date** - YYYY-MM-DD format 175231d0edbSAtari911- **Title** - Event name (supports **bold**, [[links]], //italic//) 17619378907SAtari911 177231d0edbSAtari911**Optional**: 178*5836612dSAtari911- **Time** - HH:MM format (24-hour) - leave blank for all-day 179231d0edbSAtari911- **End Time** - HH:MM format (for duration) 180*5836612dSAtari911- **Color** - Choose from picker or enter hex code 181231d0edbSAtari911- **Category** - For organization 182231d0edbSAtari911- **Description** - Full DokuWiki formatting supported 18319378907SAtari911 184*5836612dSAtari911### DokuWiki Formatting 18519378907SAtari911 186231d0edbSAtari911Events support full DokuWiki syntax: 18719378907SAtari911 18819378907SAtari911``` 189231d0edbSAtari911**Meeting with [[team:bob|Bob]]** 19019378907SAtari911 191231d0edbSAtari911Discuss: 192231d0edbSAtari911 * Project timeline 193231d0edbSAtari911 * //Budget review// 194231d0edbSAtari911 * [[projects:alpha|Project Alpha]] status 19519378907SAtari911``` 19619378907SAtari911 197231d0edbSAtari911Renders with proper HTML formatting including clickable links. 19819378907SAtari911 199231d0edbSAtari911--- 200231d0edbSAtari911 201231d0edbSAtari911## Viewing Events 202231d0edbSAtari911 203231d0edbSAtari911### Sidebar Widget 204231d0edbSAtari911 205231d0edbSAtari911**Week Grid**: 206231d0edbSAtari911- 7 days displayed (current week) 207231d0edbSAtari911- Event count badges on days with events 208*5836612dSAtari911- Click any day → View all events (expandable section) 209231d0edbSAtari911- Events sorted: All-day first, then by time 210231d0edbSAtari911 211231d0edbSAtari911**Today Section** (Orange): 212231d0edbSAtari911- All events happening today 213*5836612dSAtari911- Sorted: All-day first, then chronologically 214231d0edbSAtari911 215231d0edbSAtari911**Tomorrow Section** (Green): 216231d0edbSAtari911- All events happening tomorrow 217231d0edbSAtari911- Same sorting as Today 218231d0edbSAtari911 219231d0edbSAtari911**Important Events Section** (Purple): 220231d0edbSAtari911- Future events from "important" namespace 221231d0edbSAtari911- Configurable in Outlook Sync settings 222231d0edbSAtari911 223231d0edbSAtari911### Clicked Day Events 224231d0edbSAtari911 225231d0edbSAtari911When you click a day in the week grid: 226231d0edbSAtari911 22719378907SAtari911``` 228231d0edbSAtari911Monday, Feb 5 229*5836612dSAtari911├─ [Green] All Day - Project Deadline 230*5836612dSAtari911├─ [Blue] 8:00 AM - Morning Standup 231*5836612dSAtari911├─ [Orange] 10:30 AM - Coffee with Bob ⚠ 232*5836612dSAtari911└─ [Purple] 2:00 PM - Team Meeting 23319378907SAtari911``` 23419378907SAtari911 235*5836612dSAtari911**Features**: 236*5836612dSAtari911- **Single color bar** (3px) - Event's assigned color 237*5836612dSAtari911- **Conflict badge** - ⚠ appears on right if event overlaps 238*5836612dSAtari911- **Sorting** - All-day events FIRST, then chronological 239231d0edbSAtari911 240231d0edbSAtari911--- 241231d0edbSAtari911 242*5836612dSAtari911## ⚙️ System Monitoring 243231d0edbSAtari911 244*5836612dSAtari911### Live Stats in Sidebar 245231d0edbSAtari911 246*5836612dSAtari911**Green Bar** (5-min CPU Load): 247*5836612dSAtari911``` 248*5836612dSAtari911Hover to see: 249*5836612dSAtari911CPU Load Average 250*5836612dSAtari9111-min: 2.45 251*5836612dSAtari9115-min: 2.12 252*5836612dSAtari91115-min: 1.98 253*5836612dSAtari911Uptime: 5 days, 3 hours 254*5836612dSAtari911``` 255231d0edbSAtari911 256*5836612dSAtari911**Purple Bar** (Real-time CPU): 257*5836612dSAtari911``` 258*5836612dSAtari911Hover to see: 259*5836612dSAtari911CPU Load (Short-term) 260*5836612dSAtari911Current: 25.3% 261231d0edbSAtari911 262*5836612dSAtari911Top Processes: 263*5836612dSAtari9111. apache2 (8.2%) 264*5836612dSAtari9112. mysql (6.1%) 265*5836612dSAtari9113. php-fpm (4.5%) 266*5836612dSAtari911``` 267231d0edbSAtari911 268*5836612dSAtari911**Orange Bar** (Memory Usage): 269*5836612dSAtari911``` 270*5836612dSAtari911Hover to see: 271*5836612dSAtari911Memory Usage 272*5836612dSAtari911Total: 16.0 GB 273*5836612dSAtari911Used: 8.2 GB (51%) 274*5836612dSAtari911Available: 7.8 GB 275231d0edbSAtari911 276*5836612dSAtari911Top Processes: 277*5836612dSAtari9111. mysql (2.1 GB) 278*5836612dSAtari9112. apache2 (1.3 GB) 279*5836612dSAtari9113. php-fpm (845 MB) 280*5836612dSAtari911``` 281231d0edbSAtari911 282*5836612dSAtari911**Update Frequency**: 283*5836612dSAtari911- Stats: Every 2 seconds 284*5836612dSAtari911- Weather: Every 10 minutes 285*5836612dSAtari911- Clock: Every second 286231d0edbSAtari911 287*5836612dSAtari911--- 288231d0edbSAtari911 289*5836612dSAtari911## ️ Weather Display 290231d0edbSAtari911 291*5836612dSAtari911- **Geolocation-based** temperature 292*5836612dSAtari911- **Fallback**: Irvine, CA (33.6846, -117.8265) 293*5836612dSAtari911- **Updates**: Every 10 minutes 294*5836612dSAtari911- **Display**: Icon + temperature (e.g., "️ 72°") 295231d0edbSAtari911 296231d0edbSAtari911--- 297231d0edbSAtari911 298231d0edbSAtari911## Outlook Sync Setup 299231d0edbSAtari911 300231d0edbSAtari911### Prerequisites 301231d0edbSAtari9111. Microsoft Azure account 302231d0edbSAtari9112. Registered application in Azure Portal 303231d0edbSAtari9113. Calendar permissions granted 304231d0edbSAtari911 305231d0edbSAtari911### Configuration Steps 306231d0edbSAtari911 307231d0edbSAtari9111. **Register Azure App**: 308231d0edbSAtari911 - Go to https://portal.azure.com 309231d0edbSAtari911 - Navigate to App Registrations 310231d0edbSAtari911 - Create new registration 311231d0edbSAtari911 - Note: Tenant ID, Client ID 312231d0edbSAtari911 313231d0edbSAtari9112. **Create Client Secret**: 314231d0edbSAtari911 - In your app, go to Certificates & secrets 315231d0edbSAtari911 - Create new client secret 316231d0edbSAtari911 - Copy the secret value (shown once!) 317231d0edbSAtari911 318231d0edbSAtari9113. **Configure Permissions**: 319231d0edbSAtari911 - Add API permissions: 320231d0edbSAtari911 - Calendars.ReadWrite 321231d0edbSAtari911 - Calendars.ReadWrite.Shared 322231d0edbSAtari911 - Grant admin consent 323231d0edbSAtari911 324231d0edbSAtari9114. **Enter in DokuWiki**: 325231d0edbSAtari911 - Admin → Calendar Management → Outlook Sync 326231d0edbSAtari911 - Enter Tenant ID, Client ID, Client Secret 327231d0edbSAtari911 - Enter your email address 328231d0edbSAtari911 - Select timezone 329231d0edbSAtari911 - Configure sync settings 330231d0edbSAtari911 - Click **Save Configuration** 331231d0edbSAtari911 332231d0edbSAtari9115. **Test Sync**: 333231d0edbSAtari911 - Create event in DokuWiki 334231d0edbSAtari911 - Run sync (cron job or manual) 335231d0edbSAtari911 - Check Outlook calendar 336231d0edbSAtari911 - Create event in Outlook 337231d0edbSAtari911 - Run sync 338231d0edbSAtari911 - Check DokuWiki calendar 339231d0edbSAtari911 340231d0edbSAtari911### Sync Behavior 341231d0edbSAtari911 342231d0edbSAtari911**DokuWiki → Outlook**: 343231d0edbSAtari911- New events created in Outlook 344231d0edbSAtari911- Updates sync to existing events 345231d0edbSAtari911- Deletes sync if "Delete Outlook events" enabled 346231d0edbSAtari911 347231d0edbSAtari911**Outlook → DokuWiki**: 348231d0edbSAtari911- New events created in DokuWiki 349231d0edbSAtari911- Updates sync to existing events 350231d0edbSAtari911- Category colors mapped to DokuWiki colors 351231d0edbSAtari911 352*5836612dSAtari911**Conflict Resolution**: Last-write-wins 353231d0edbSAtari911 354231d0edbSAtari911--- 355231d0edbSAtari911 356231d0edbSAtari911## Color Scheme 357231d0edbSAtari911 358*5836612dSAtari911### Section Colors 359231d0edbSAtari911 360*5836612dSAtari911- **Today**: Orange #ff9800 361*5836612dSAtari911- **Tomorrow**: Green #4caf50 362*5836612dSAtari911- **Important Events**: Purple #9b59b6 363*5836612dSAtari911- **Add Event Bar**: Dark green #006400 364231d0edbSAtari911 365231d0edbSAtari911### System Bars 366231d0edbSAtari911 367*5836612dSAtari911- **Green Bar**: 5-min CPU load average 368*5836612dSAtari911- **Purple Bar**: Real-time CPU usage 369*5836612dSAtari911- **Orange Bar**: Real-time memory usage 370231d0edbSAtari911 371*5836612dSAtari911### Event Colors 372231d0edbSAtari911 373*5836612dSAtari911- **Default**: Matrix Green #00cc07 374*5836612dSAtari911- **Custom**: User-assigned color (via color picker) 375231d0edbSAtari911 376231d0edbSAtari911--- 377231d0edbSAtari911 378*5836612dSAtari911## ️ Admin Interface 379231d0edbSAtari911 380*5836612dSAtari911### Access 381*5836612dSAtari911Go to **Admin → Calendar Management** 382231d0edbSAtari911 383*5836612dSAtari911### Tabs 38419378907SAtari911 385*5836612dSAtari911#### 1. Update Plugin (Default Tab) 38619378907SAtari911 387*5836612dSAtari911**Features**: 388*5836612dSAtari911- Current version and date 389*5836612dSAtari911- Author information 390*5836612dSAtari911- Installation path 391*5836612dSAtari911- Permission check 392*5836612dSAtari911- **️ Clear Cache** button (prominent orange) 393*5836612dSAtari911- Recent changelog (last 10 versions) 39419378907SAtari911 395*5836612dSAtari911**Clear Cache**: 396*5836612dSAtari911- Click orange button 397*5836612dSAtari911- Confirm dialog 398*5836612dSAtari911- Clears all DokuWiki cache 399*5836612dSAtari911- **Use after every plugin update!** 40019378907SAtari911 401*5836612dSAtari911#### 2. ⚙️ Outlook Sync 40219378907SAtari911 403*5836612dSAtari911**Azure Configuration**: 404*5836612dSAtari911- Tenant ID 405*5836612dSAtari911- Client ID 406*5836612dSAtari911- Client Secret 407*5836612dSAtari911- User Email 408*5836612dSAtari911- Timezone 409*5836612dSAtari911 410*5836612dSAtari911**Sync Settings**: 411*5836612dSAtari911- Default category 412*5836612dSAtari911- Reminder minutes 413*5836612dSAtari911- Sync completed tasks (checkbox) 414*5836612dSAtari911- Delete Outlook events (checkbox) 415*5836612dSAtari911- Important namespaces (comma-separated) 416*5836612dSAtari911 417*5836612dSAtari911**Category Mapping**: 418*5836612dSAtari911- Map DokuWiki colors to Outlook categories 419*5836612dSAtari911- Visual color picker 420*5836612dSAtari911 421*5836612dSAtari911**Buttons**: 422*5836612dSAtari911- ** Export Config** - Download encrypted config 423*5836612dSAtari911- ** Import Config** - Upload encrypted config 424*5836612dSAtari911- **Save Configuration** 425*5836612dSAtari911 426*5836612dSAtari911#### 3. Manage Events 427*5836612dSAtari911 428*5836612dSAtari911**Features**: 429*5836612dSAtari911- Browse all events across all namespaces 430*5836612dSAtari911- Filter by namespace 431*5836612dSAtari911- Search events 432*5836612dSAtari911- Edit event details 433*5836612dSAtari911- Delete events 434*5836612dSAtari911- Move events between dates/namespaces 43519378907SAtari911 436231d0edbSAtari911--- 43719378907SAtari911 438231d0edbSAtari911## File Structure 439231d0edbSAtari911 440231d0edbSAtari911### Event Storage 44119378907SAtari911``` 44219378907SAtari911data/meta/calendar/2026-02.json 443*5836612dSAtari911data/meta/team/calendar/2026-02.json 44419378907SAtari911``` 44519378907SAtari911 446231d0edbSAtari911### Event JSON Format 44719378907SAtari911```json 44819378907SAtari911{ 449231d0edbSAtari911 "2026-02-06": [ 45019378907SAtari911 { 451231d0edbSAtari911 "id": "evt_abc123", 452*5836612dSAtari911 "title": "**Team Meeting**", 453*5836612dSAtari911 "title_html": "<strong>Team Meeting</strong>", 45419378907SAtari911 "time": "14:00", 455231d0edbSAtari911 "end_time": "15:00", 456*5836612dSAtari911 "description": "Discuss //timeline//", 457*5836612dSAtari911 "description_html": "Discuss <em>timeline</em>", 45819378907SAtari911 "color": "#3498db", 459231d0edbSAtari911 "category": "Meetings", 460231d0edbSAtari911 "namespace": "team", 461231d0edbSAtari911 "created": "2026-02-05 10:00:00", 462231d0edbSAtari911 "modified": "2026-02-05 10:30:00", 463*5836612dSAtari911 "conflict": false 46419378907SAtari911 } 46519378907SAtari911 ] 46619378907SAtari911} 46719378907SAtari911``` 46819378907SAtari911 469231d0edbSAtari911### Fields Explained 47019378907SAtari911 471231d0edbSAtari911- **id**: Unique identifier (auto-generated) 472231d0edbSAtari911- **title**: Raw DokuWiki syntax 473*5836612dSAtari911- **title_html**: Pre-rendered HTML for JavaScript 474231d0edbSAtari911- **time**: Start time (HH:MM, 24-hour) 475231d0edbSAtari911- **end_time**: End time (optional) 476231d0edbSAtari911- **description**: Raw DokuWiki syntax 477231d0edbSAtari911- **description_html**: Pre-rendered HTML 478231d0edbSAtari911- **color**: Hex color code 479231d0edbSAtari911- **category**: Category name 480231d0edbSAtari911- **namespace**: Calendar namespace 481*5836612dSAtari911- **created**: Timestamp 482231d0edbSAtari911- **modified**: Last modified timestamp 483231d0edbSAtari911- **conflict**: Boolean - time conflict detected 48419378907SAtari911 485231d0edbSAtari911--- 48619378907SAtari911 487*5836612dSAtari911## Troubleshooting 48819378907SAtari911 489231d0edbSAtari911### Events Not Displaying 49019378907SAtari911 491231d0edbSAtari911**Check 1**: Clear cache 492231d0edbSAtari911- Admin → Calendar Management 493231d0edbSAtari911- Click **️ Clear Cache** 494231d0edbSAtari911- Confirm and refresh page 49519378907SAtari911 496231d0edbSAtari911**Check 2**: File permissions 497231d0edbSAtari911```bash 498231d0edbSAtari911ls -la data/meta/calendar/ 499231d0edbSAtari911# Should show www-data:www-data ownership 500231d0edbSAtari911# Should show 775 permissions 501231d0edbSAtari911 502231d0edbSAtari911# Fix if needed: 503231d0edbSAtari911chown -R www-data:www-data data/meta/calendar/ 504231d0edbSAtari911chmod -R 775 data/meta/calendar/ 50519378907SAtari911``` 50619378907SAtari911 507231d0edbSAtari911**Check 3**: Check JSON validity 508231d0edbSAtari911```bash 509231d0edbSAtari911cat data/meta/calendar/2026-02.json 510231d0edbSAtari911# Should be valid JSON 511231d0edbSAtari911``` 51219378907SAtari911 513231d0edbSAtari911### Color Bars Not Showing 51419378907SAtari911 515231d0edbSAtari911**Solution**: 516231d0edbSAtari9111. Clear browser cache (Ctrl+Shift+R) 517231d0edbSAtari9112. Clear DokuWiki cache (admin button) 518*5836612dSAtari9113. Verify plugin version is 4.0.0 51919378907SAtari911 520231d0edbSAtari911### Tooltips Not Working 52119378907SAtari911 522231d0edbSAtari911**Solution**: 523231d0edbSAtari9111. Verify JavaScript is enabled 524231d0edbSAtari9112. Clear cache 525*5836612dSAtari9113. Check console for errors 526*5836612dSAtari9114. Update to version 4.0.0 527231d0edbSAtari911 528231d0edbSAtari911### Weather Shows "--°" 529231d0edbSAtari911 530231d0edbSAtari911**Solution**: 531231d0edbSAtari9111. Clear cache 532*5836612dSAtari9112. Allow geolocation in browser 533231d0edbSAtari9113. Wait 10 seconds for initial update 534*5836612dSAtari9114. Check console for errors 535*5836612dSAtari911 536*5836612dSAtari911### Add Event Button Doesn't Work 537*5836612dSAtari911 538*5836612dSAtari911**Solution**: 539*5836612dSAtari9111. Check browser console for errors 540*5836612dSAtari9112. Verify calendar-main.js loaded 541*5836612dSAtari9113. Clear cache 542*5836612dSAtari9114. Update to version 4.0.0 543231d0edbSAtari911 544231d0edbSAtari911### Outlook Sync Not Working 545231d0edbSAtari911 546231d0edbSAtari911**Check 1**: Azure credentials 547231d0edbSAtari911- Verify Tenant ID, Client ID, Client Secret 548231d0edbSAtari911- Check app permissions in Azure Portal 549231d0edbSAtari911- Ensure admin consent granted 550231d0edbSAtari911 551*5836612dSAtari911**Check 2**: Cron job 552231d0edbSAtari911```bash 553231d0edbSAtari911# Check cron is running 554231d0edbSAtari911crontab -l 555231d0edbSAtari911 556231d0edbSAtari911# Should show: 557231d0edbSAtari911*/15 * * * * /usr/bin/php /path/to/dokuwiki/lib/plugins/calendar/sync_outlook.php 558231d0edbSAtari911``` 559231d0edbSAtari911 560231d0edbSAtari911--- 561231d0edbSAtari911 562231d0edbSAtari911## Performance 563231d0edbSAtari911 564231d0edbSAtari911### Optimizations 565231d0edbSAtari911 566231d0edbSAtari911- **Event Caching**: JSON files cached per month 567231d0edbSAtari911- **Lazy Loading**: Events loaded on demand 568231d0edbSAtari911- **AJAX Updates**: No full page reloads 569231d0edbSAtari911- **Minimal DOM**: Only visible events rendered 570231d0edbSAtari911 571231d0edbSAtari911### Recommended Limits 572231d0edbSAtari911 573231d0edbSAtari911- **Events per month**: < 500 (no performance issues) 574231d0edbSAtari911- **Events per day**: < 50 (UI remains clean) 575231d0edbSAtari911- **Namespaces**: Unlimited (loaded separately) 576231d0edbSAtari911- **Event description**: < 500 characters (for readability) 577231d0edbSAtari911 578231d0edbSAtari911--- 579231d0edbSAtari911 580231d0edbSAtari911## Security 581231d0edbSAtari911 582231d0edbSAtari911### Data Storage 583231d0edbSAtari911- Events stored server-side in JSON 584231d0edbSAtari911- No client-side storage used 585231d0edbSAtari911- File permissions protect data 586231d0edbSAtari911 587231d0edbSAtari911### Outlook Sync 588231d0edbSAtari911- Credentials encrypted in config file 589231d0edbSAtari911- OAuth 2.0 authentication 590231d0edbSAtari911- Secrets never logged or displayed 591231d0edbSAtari911 592231d0edbSAtari911### Admin Access 593231d0edbSAtari911- Requires DokuWiki admin permissions 594231d0edbSAtari911- All actions logged 595231d0edbSAtari911- CSRF protection on forms 596231d0edbSAtari911 597231d0edbSAtari911--- 598231d0edbSAtari911 599231d0edbSAtari911## Browser Support 600231d0edbSAtari911 601231d0edbSAtari911| Browser | Version | Status | 602231d0edbSAtari911|---------|---------|--------| 603231d0edbSAtari911| Chrome | 90+ | ✅ Full | 604231d0edbSAtari911| Firefox | 88+ | ✅ Full | 605231d0edbSAtari911| Safari | 14+ | ✅ Full | 606231d0edbSAtari911| Edge | 90+ | ✅ Full | 607*5836612dSAtari911| Mobile | Modern | ⚠️ Limited (sidebar scrollable) | 608231d0edbSAtari911 609231d0edbSAtari911**Required Features**: 610231d0edbSAtari911- Flexbox 611231d0edbSAtari911- Fetch API 612231d0edbSAtari911- ES6 JavaScript 613231d0edbSAtari911- CSS Grid 614231d0edbSAtari911 615231d0edbSAtari911--- 616231d0edbSAtari911 617231d0edbSAtari911## Support 618231d0edbSAtari911 619231d0edbSAtari911### Documentation 620*5836612dSAtari911- `CHANGELOG.md` - Full version history 621*5836612dSAtari911- `RELEASE_NOTES_v4.0.0.txt` - v4.0 details 622231d0edbSAtari911- `OUTLOOK_SYNC_SETUP.md` - Detailed sync guide 623231d0edbSAtari911- `QUICK_REFERENCE.md` - Syntax quick reference 624231d0edbSAtari911 625231d0edbSAtari911### Getting Help 626231d0edbSAtari9111. Check this README first 627231d0edbSAtari9112. Review CHANGELOG for recent changes 628231d0edbSAtari9113. Clear cache after updates 629231d0edbSAtari9114. Check browser console for errors 630231d0edbSAtari9115. Verify file permissions 631231d0edbSAtari911 632231d0edbSAtari911--- 633231d0edbSAtari911 634231d0edbSAtari911## License 63519378907SAtari911 63619378907SAtari911GPL 2.0 63719378907SAtari911 638231d0edbSAtari911--- 63919378907SAtari911 640*5836612dSAtari911## ✨ What's New in v4.0.0 641231d0edbSAtari911 642*5836612dSAtari911### Major Changes from v3.x 643*5836612dSAtari911- ✅ **Single color bars** (removed dual bars) 644*5836612dSAtari911- ✅ **All-day events first** (reversed sorting) 645*5836612dSAtari911- ✅ **Add Event dialog** in sidebar widget 646*5836612dSAtari911- ✅ **Perfect spacing** throughout 647*5836612dSAtari911- ✅ **Matrix Edition** official naming 648*5836612dSAtari911- ✅ **Production ready** - all bugs resolved 649231d0edbSAtari911 650*5836612dSAtari911### Breaking Changes 651*5836612dSAtari911- Dual color bars removed (now single bar only) 652*5836612dSAtari911- All-day events now appear FIRST (not last) 653*5836612dSAtari911- Update Plugin tab is now default (not Config) 654*5836612dSAtari911 655*5836612dSAtari911### Bug Fixes 656*5836612dSAtari911- Fixed color bars rendering (align-self:stretch) 657*5836612dSAtari911- Fixed tooltip function naming 658*5836612dSAtari911- Fixed weather display 659*5836612dSAtari911- Fixed HTML rendering in events 660*5836612dSAtari911- Fixed Add Event dialog 661*5836612dSAtari911- Fixed spacing throughout 662231d0edbSAtari911 663231d0edbSAtari911--- 664231d0edbSAtari911 665231d0edbSAtari911## Quick Start Examples 666231d0edbSAtari911 667231d0edbSAtari911### Personal Calendar 668231d0edbSAtari911``` 669231d0edbSAtari911====== My Schedule ====== 670231d0edbSAtari911 671231d0edbSAtari911{{calendar sidebar namespace=personal}} 672231d0edbSAtari911 673*5836612dSAtari911**Quick Add**: Click the dark green "+ ADD EVENT" bar 674231d0edbSAtari911``` 675231d0edbSAtari911 676231d0edbSAtari911### Team Dashboard 677231d0edbSAtari911``` 678231d0edbSAtari911====== Development Team ====== 679231d0edbSAtari911 680231d0edbSAtari911{{calendar sidebar namespace=team:dev}} 681231d0edbSAtari911 682231d0edbSAtari911**System Stats**: Hover over colored bars for details 683231d0edbSAtari911**Today's Events**: Automatically displayed below calendar 684231d0edbSAtari911``` 685231d0edbSAtari911 686231d0edbSAtari911### Project Timeline 687231d0edbSAtari911``` 688231d0edbSAtari911====== Project Alpha ====== 689231d0edbSAtari911 690231d0edbSAtari911{{calendar namespace=projects:alpha year=2026 month=3}} 691231d0edbSAtari911 692231d0edbSAtari911**Milestones**: 693231d0edbSAtari911 * [[projects:alpha:kickoff|Mar 1 - Kickoff]] 694231d0edbSAtari911 * [[projects:alpha:design|Mar 15 - Design Review]] 695231d0edbSAtari911 * [[projects:alpha:launch|Mar 31 - Launch]] 696231d0edbSAtari911``` 697231d0edbSAtari911 698231d0edbSAtari911--- 699231d0edbSAtari911 700*5836612dSAtari911## Credits 701*5836612dSAtari911 702*5836612dSAtari911**Author**: atari911 703*5836612dSAtari911**Email**: atari911@gmail.com 704*5836612dSAtari911**Version**: 4.0.0 705*5836612dSAtari911**Date**: February 6, 2026 706*5836612dSAtari911 707*5836612dSAtari911**Special Features**: 708*5836612dSAtari911- Matrix theme design 709*5836612dSAtari911- Outlook synchronization 710*5836612dSAtari911- System monitoring integration 711*5836612dSAtari911- Real-time weather display 712*5836612dSAtari911- Advanced event conflict detection 713*5836612dSAtari911 714*5836612dSAtari911--- 715*5836612dSAtari911 716*5836612dSAtari911## Final Notes 717*5836612dSAtari911 718*5836612dSAtari911**Version 4.0.0 - Matrix Edition** represents a complete, production-ready calendar plugin with: 719*5836612dSAtari911 720*5836612dSAtari911- ✨ Beautiful Matrix-themed design 721*5836612dSAtari911- Live system monitoring 722*5836612dSAtari911- ️ Real-time weather 723*5836612dSAtari911- Advanced event management 724*5836612dSAtari911- Enterprise Outlook sync 725*5836612dSAtari911- Polished UI throughout 726*5836612dSAtari911 727*5836612dSAtari911**Install it, clear cache, and enjoy your Matrix calendar!** 728*5836612dSAtari911 729*5836612dSAtari911--- 730*5836612dSAtari911 731*5836612dSAtari911**Happy Calendaring! ️✨** 732