1*19378907SAtari911# DokuWiki Compact Calendar Plugin 2*19378907SAtari911 3*19378907SAtari911A sleek, space-efficient calendar plugin with integrated event list panel. 4*19378907SAtari911 5*19378907SAtari911## Design Specifications 6*19378907SAtari911 7*19378907SAtari911- **Dimensions**: 800x600 pixels (compact, fixed-size) 8*19378907SAtari911- **Layout**: Split view with calendar on left (500px) and event list on right (300px) 9*19378907SAtari911- **Cell Size**: Excel-like cells (~65px height, proportional width) 10*19378907SAtari911- **Style**: Clean, modern, professional 11*19378907SAtari911 12*19378907SAtari911## Features 13*19378907SAtari911 14*19378907SAtari911✨ **Compact Design**: Fits perfectly in 800x600 area 15*19378907SAtari911 **Month View**: Excel-style grid with clean borders 16*19378907SAtari911 **Integrated Event List**: View and manage events in right panel 17*19378907SAtari911️ **Event Panel Only**: Display just the event panel (320px width) 18*19378907SAtari911 **Day Popup**: Click any date to see/edit events in popup window 19*19378907SAtari911➕ **Quick Add**: Add events from calendar, panel, or popup 20*19378907SAtari911✏️ **Edit/Delete**: Full event management with date changes 21*19378907SAtari911 **Color Coding**: Custom colors for events 22*19378907SAtari911⚡ **Real-time Updates**: AJAX-powered, no page reloads needed 23*19378907SAtari911 **Responsive Event List**: Scrollable panel for many events 24*19378907SAtari911 **Day Filter**: Click any day to see events in popup 25*19378907SAtari911 **Standalone Event Lists**: Display events independently 26*19378907SAtari911 27*19378907SAtari911## Installation 28*19378907SAtari911 29*19378907SAtari9111. Extract to `lib/plugins/calendar/` 30*19378907SAtari9112. Create data directory: 31*19378907SAtari911 ```bash 32*19378907SAtari911 mkdir -p data/meta/calendar 33*19378907SAtari911 chmod 775 data/meta/calendar 34*19378907SAtari911 ``` 35*19378907SAtari9113. Plugin will be auto-detected by DokuWiki 36*19378907SAtari911 37*19378907SAtari911## Usage 38*19378907SAtari911 39*19378907SAtari911### Basic Calendar 40*19378907SAtari911 41*19378907SAtari911``` 42*19378907SAtari911{{calendar}} 43*19378907SAtari911``` 44*19378907SAtari911 45*19378907SAtari911Displays current month with event list panel. 46*19378907SAtari911 47*19378907SAtari911### Specific Month 48*19378907SAtari911 49*19378907SAtari911``` 50*19378907SAtari911{{calendar year=2026 month=6}} 51*19378907SAtari911``` 52*19378907SAtari911 53*19378907SAtari911### With Namespace 54*19378907SAtari911 55*19378907SAtari911``` 56*19378907SAtari911{{calendar namespace=team}} 57*19378907SAtari911``` 58*19378907SAtari911 59*19378907SAtari911Events stored separately for different teams/projects. 60*19378907SAtari911 61*19378907SAtari911### Event Panel Only (Right Panel) 62*19378907SAtari911 63*19378907SAtari911Display just the event panel without the calendar grid: 64*19378907SAtari911 65*19378907SAtari911``` 66*19378907SAtari911{{eventpanel}} 67*19378907SAtari911``` 68*19378907SAtari911 69*19378907SAtari911Or with specific month: 70*19378907SAtari911 71*19378907SAtari911``` 72*19378907SAtari911{{eventpanel year=2026 month=6 namespace=team}} 73*19378907SAtari911``` 74*19378907SAtari911 75*19378907SAtari911Perfect for sidebars or when you want event management without the full calendar view. 76*19378907SAtari911 77*19378907SAtari911### Standalone Event List 78*19378907SAtari911 79*19378907SAtari911Display events in a list without the calendar: 80*19378907SAtari911 81*19378907SAtari911``` 82*19378907SAtari911{{eventlist date=2026-01-22}} 83*19378907SAtari911``` 84*19378907SAtari911 85*19378907SAtari911Or date range: 86*19378907SAtari911 87*19378907SAtari911``` 88*19378907SAtari911{{eventlist daterange=2026-01-01:2026-01-31}} 89*19378907SAtari911``` 90*19378907SAtari911 91*19378907SAtari911With namespace: 92*19378907SAtari911 93*19378907SAtari911``` 94*19378907SAtari911{{eventlist daterange=2026-01-01:2026-01-31 namespace=team}} 95*19378907SAtari911``` 96*19378907SAtari911 97*19378907SAtari911## How to Use 98*19378907SAtari911 99*19378907SAtari911### Adding Events 100*19378907SAtari911 101*19378907SAtari9111. Click **+ Add** button in event panel, OR 102*19378907SAtari9112. Click any day in the calendar to open day popup 103*19378907SAtari9113. Fill in event details: 104*19378907SAtari911 - Date (required - can be changed) 105*19378907SAtari911 - Title (required) 106*19378907SAtari911 - Time (optional) 107*19378907SAtari911 - Color (optional, default blue) 108*19378907SAtari911 - Description (optional) 109*19378907SAtari9114. Click **Save** 110*19378907SAtari911 111*19378907SAtari911### Viewing Events 112*19378907SAtari911 113*19378907SAtari911- **See all month events**: Scroll through event list panel 114*19378907SAtari911- **View day events**: Click any calendar day to see popup with that day's events 115*19378907SAtari911- **Orange dot**: Indicates day has events 116*19378907SAtari911- **Day popup**: Shows all events for clicked date with full details 117*19378907SAtari911 118*19378907SAtari911### Editing Events 119*19378907SAtari911 120*19378907SAtari9111. Click calendar day to open popup, OR find event in list panel 121*19378907SAtari9112. Click **Edit** button 122*19378907SAtari9113. Modify details (including date if you want to move the event) 123*19378907SAtari9114. Click **Save** 124*19378907SAtari911 125*19378907SAtari911### Deleting Events 126*19378907SAtari911 127*19378907SAtari9111. Click calendar day to open popup, OR find event in list panel 128*19378907SAtari9112. Click **Delete** button 129*19378907SAtari9113. Confirm deletion 130*19378907SAtari911 131*19378907SAtari911## Design Details 132*19378907SAtari911 133*19378907SAtari911### Calendar Grid 134*19378907SAtari911- **Cell size**: ~65px height (similar to Excel) 135*19378907SAtari911- **Grid lines**: Light gray borders 136*19378907SAtari911- **Today**: Blue highlight 137*19378907SAtari911- **Has events**: Yellow tint with orange dot 138*19378907SAtari911- **Hover**: Subtle highlight 139*19378907SAtari911 140*19378907SAtari911### Event List Panel 141*19378907SAtari911- **Scrollable**: Handle many events efficiently 142*19378907SAtari911- **Color bar**: Left edge shows event color 143*19378907SAtari911- **Compact info**: Date, time, title, description 144*19378907SAtari911- **Action buttons**: Edit and Delete for each event 145*19378907SAtari911 146*19378907SAtari911### Color Indicators 147*19378907SAtari911- **Blue background**: Today 148*19378907SAtari911- **Yellow background**: Days with events 149*19378907SAtari911- **Orange dot**: Event indicator 150*19378907SAtari911- **Gray**: Empty days 151*19378907SAtari911 152*19378907SAtari911## Examples 153*19378907SAtari911 154*19378907SAtari911### Team Calendar 155*19378907SAtari911 156*19378907SAtari911``` 157*19378907SAtari911====== Development Team Calendar ====== 158*19378907SAtari911 159*19378907SAtari911{{calendar namespace=team:dev}} 160*19378907SAtari911 161*19378907SAtari911**Color Code**: 162*19378907SAtari911 * Blue: Meetings 163*19378907SAtari911 * Green: Deadlines 164*19378907SAtari911 * Yellow: Code reviews 165*19378907SAtari911 * Red: Releases 166*19378907SAtari911``` 167*19378907SAtari911 168*19378907SAtari911### Project Timeline 169*19378907SAtari911 170*19378907SAtari911``` 171*19378907SAtari911====== Project Alpha - January 2026 ====== 172*19378907SAtari911 173*19378907SAtari911{{calendar namespace=projects:alpha year=2026 month=1}} 174*19378907SAtari911 175*19378907SAtari911**Milestones**: 176*19378907SAtari911 * Jan 5: Kickoff 177*19378907SAtari911 * Jan 15: Design complete 178*19378907SAtari911 * Jan 30: Development start 179*19378907SAtari911``` 180*19378907SAtari911 181*19378907SAtari911### Personal Schedule 182*19378907SAtari911 183*19378907SAtari911``` 184*19378907SAtari911====== My Schedule ====== 185*19378907SAtari911 186*19378907SAtari911{{calendar namespace=personal:john}} 187*19378907SAtari911 188*19378907SAtari911**Regular Events**: 189*19378907SAtari911 * Monday: Team standup 9 AM 190*19378907SAtari911 * Wednesday: Client calls 191*19378907SAtari911 * Friday: Sprint review 192*19378907SAtari911``` 193*19378907SAtari911 194*19378907SAtari911### Event Panel Sidebar 195*19378907SAtari911 196*19378907SAtari911``` 197*19378907SAtari911====== Team Events ====== 198*19378907SAtari911 199*19378907SAtari911{{eventpanel namespace=team}} 200*19378907SAtari911 201*19378907SAtari911Shows only the event management panel (320px wide) - perfect for page sidebars. 202*19378907SAtari911``` 203*19378907SAtari911 204*19378907SAtari911### Event Report 205*19378907SAtari911 206*19378907SAtari911``` 207*19378907SAtari911====== This Month's Events ====== 208*19378907SAtari911 209*19378907SAtari911{{eventlist daterange=2026-01-01:2026-01-31 namespace=team}} 210*19378907SAtari911 211*19378907SAtari911**Summary**: 24 events scheduled 212*19378907SAtari911``` 213*19378907SAtari911 214*19378907SAtari911## File Storage 215*19378907SAtari911 216*19378907SAtari911Events are stored in JSON format: 217*19378907SAtari911 218*19378907SAtari911``` 219*19378907SAtari911data/meta/calendar/2026-01.json 220*19378907SAtari911data/meta/calendar/2026-02.json 221*19378907SAtari911data/meta/[namespace]/calendar/2026-01.json 222*19378907SAtari911``` 223*19378907SAtari911 224*19378907SAtari911Each file contains all events for that month. 225*19378907SAtari911 226*19378907SAtari911## Event Data Structure 227*19378907SAtari911 228*19378907SAtari911```json 229*19378907SAtari911{ 230*19378907SAtari911 "2026-01-22": [ 231*19378907SAtari911 { 232*19378907SAtari911 "id": "abc123", 233*19378907SAtari911 "title": "Team Meeting", 234*19378907SAtari911 "time": "14:00", 235*19378907SAtari911 "description": "Weekly sync", 236*19378907SAtari911 "color": "#3498db", 237*19378907SAtari911 "created": "2026-01-20 10:00:00" 238*19378907SAtari911 } 239*19378907SAtari911 ] 240*19378907SAtari911} 241*19378907SAtari911``` 242*19378907SAtari911 243*19378907SAtari911## Troubleshooting 244*19378907SAtari911 245*19378907SAtari911### Calendar not showing 246*19378907SAtari911- Check plugin is in `lib/plugins/calendar/` 247*19378907SAtari911- Verify all files present (syntax.php, action.php, style.css, script.js) 248*19378907SAtari911- Clear DokuWiki cache 249*19378907SAtari911 250*19378907SAtari911### Events not saving 251*19378907SAtari911- Check `data/meta/calendar/` is writable 252*19378907SAtari911- Verify web server user has permissions 253*19378907SAtari911- Check browser console for errors 254*19378907SAtari911 255*19378907SAtari911### Events not displaying 256*19378907SAtari911- Manually create test event file (see below) 257*19378907SAtari911- Check JSON is valid 258*19378907SAtari911- Verify date format is YYYY-MM-DD 259*19378907SAtari911 260*19378907SAtari911### Test Event 261*19378907SAtari911 262*19378907SAtari911Create `data/meta/calendar/2026-01.json`: 263*19378907SAtari911 264*19378907SAtari911```json 265*19378907SAtari911{ 266*19378907SAtari911 "2026-01-22": [ 267*19378907SAtari911 { 268*19378907SAtari911 "id": "test1", 269*19378907SAtari911 "title": "Test Event", 270*19378907SAtari911 "time": "10:00", 271*19378907SAtari911 "description": "Testing", 272*19378907SAtari911 "color": "#e74c3c", 273*19378907SAtari911 "created": "2026-01-22 09:00:00" 274*19378907SAtari911 } 275*19378907SAtari911 ] 276*19378907SAtari911} 277*19378907SAtari911``` 278*19378907SAtari911 279*19378907SAtari911Then refresh calendar page. 280*19378907SAtari911 281*19378907SAtari911## Technical Details 282*19378907SAtari911 283*19378907SAtari911- **PHP**: 7.4+ 284*19378907SAtari911- **DokuWiki**: 2020-07-29 "Hogfather" or newer 285*19378907SAtari911- **JavaScript**: ES6, uses Fetch API 286*19378907SAtari911- **CSS**: Modern flexbox layout 287*19378907SAtari911- **Size**: Exactly 800x600px 288*19378907SAtari911 289*19378907SAtari911## Browser Support 290*19378907SAtari911 291*19378907SAtari911- Chrome/Edge: ✅ 292*19378907SAtari911- Firefox: ✅ 293*19378907SAtari911- Safari: ✅ 294*19378907SAtari911- Mobile: ⚠️ Fixed size may require horizontal scroll 295*19378907SAtari911 296*19378907SAtari911## License 297*19378907SAtari911 298*19378907SAtari911GPL 2.0 299*19378907SAtari911 300*19378907SAtari911## Support 301*19378907SAtari911 302*19378907SAtari911For issues or questions, refer to DokuWiki plugin documentation or forums. 303