xref: /plugin/calendar/README.md (revision 19378907f6c3c154fcddd2ddfe78fa2d88d43359)
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