# Live Support Chat – WordPress Plugin
Version: 1.0.0

## Installatie-instructies

### Stap 1 – Plugin installeren
1. Download de plugin ZIP (`live-support-chat.zip`)
2. Ga naar **WordPress Dashboard → Plugins → Nieuwe plugin toevoegen**
3. Klik op **Plugin uploaden**, kies het ZIP-bestand en klik op **Nu installeren**
4. Klik daarna op **Plugin activeren**

Bij activering worden automatisch twee custom database tabellen aangemaakt:
- `wp_lsc_chats` – slaat chat sessies op
- `wp_lsc_messages` – slaat berichten op

---

### Stap 2 – Pagina's aanmaken

Maak twee nieuwe WordPress pagina's aan:

#### Chatter Login Pagina
- Titel: bijv. **Chat Login**
- Content: `[live_support_chatter_login]`
- Sla de pagina op

#### Chatter Dashboard Pagina
- Titel: bijv. **Chat Dashboard**
- Content: `[live_support_chatter_dashboard]`
- Sla de pagina op

---

### Stap 3 – Instellingen configureren

Ga naar **Live Support → Instellingen** en stel in:

| Instelling | Beschrijving |
|---|---|
| Chat Status | Online of Offline |
| Widget Button Text | Tekst op de widget knop (standaard: "How Can We Help You") |
| Offline Message | Bericht voor bezoekers als support offline is |
| Chatter Login Pagina | Selecteer de pagina met `[live_support_chatter_login]` |
| Chatter Dashboard Pagina | Selecteer de pagina met `[live_support_chatter_dashboard]` |

---

### Stap 4 – Chatter gebruikers aanmaken

Ga naar **Live Support → Chatters**:

1. Vul **Username**, **Email** en **Password** in
2. Vink **Allow Chatting** aan
3. Klik op **Create Chatter**

De gebruiker krijgt automatisch de rol `chatter`.

---

### Stap 5 – Chatter inloggen

De chatter gaat naar de inlogpagina (bijv. `/chat-login/`) en logt in met de aangemaakte inloggegevens. Na inloggen wordt hij/zij automatisch doorgestuurd naar het chatter dashboard.

---

## Plugin structuur

```
live-support-chat/
├── live-support-chat.php          ← Hoofd plugin bestand
├── includes/
│   ├── class-lsc-activator.php   ← Activatie + database setup
│   ├── class-lsc-roles.php       ← WordPress roles & capabilities
│   ├── class-lsc-db.php          ← Database abstractie laag
│   ├── class-lsc-ajax.php        ← Alle AJAX handlers
│   ├── class-lsc-admin.php       ← Admin menu + instellingen (symlink)
│   ├── class-lsc-admin-users.php ← Chatter user beheer
│   ├── class-lsc-admin-chats.php ← Chat beheer (admin)
│   ├── class-lsc-widget.php      ← Frontend floating widget
│   └── class-lsc-shortcodes.php  ← Shortcode registratie & rendering
├── admin/
│   ├── class-lsc-admin.php       ← Admin klasse (origineel)
│   └── views/
│       ├── view-dashboard.php    ← Admin dashboard view
│       ├── view-users.php        ← Chatter users view
│       ├── view-chats.php        ← Chats overzicht view
│       └── view-settings.php     ← Instellingen view
├── templates/
│   ├── login-form.php            ← Chatter login formulier
│   └── chatter-dashboard.php     ← Chatter dashboard HTML
├── assets/
│   ├── css/
│   │   ├── admin.css             ← Admin styling
│   │   ├── widget.css            ← Frontend widget styling
│   │   └── chatter.css           ← Chatter login & dashboard styling
│   ├── js/
│   │   ├── admin.js              ← Admin JavaScript
│   │   ├── widget.js             ← Visitor chat widget JS
│   │   └── chatter.js            ← Chatter dashboard JS
│   └── sounds/
│       └── notification.mp3      ← Notificatie geluid
└── languages/                    ← Vertaalbestanden (.pot)
```

---

## Shortcodes

| Shortcode | Beschrijving |
|---|---|
| `[live_support_chatter_login]` | Login formulier voor chatters |
| `[live_support_chatter_dashboard]` | Volledig chatter beheerdashboard |

---

## Capabilities (rechten)

| Capability | Toewijzing |
|---|---|
| `lsc_manage_chat` | Administrator |
| `lsc_manage_users` | Administrator |
| `lsc_view_chats` | Administrator, Chatter |
| `lsc_reply_chats` | Administrator, Chatter |

---

## Veiligheid

- Alle AJAX requests zijn beveiligd met **WordPress nonces**
- Alle gebruikersinput wordt **gesanitized** (sanitize_text_field, sanitize_email, wp_kses_post)
- Alle output wordt **escaped** (esc_html, esc_attr, esc_url)
- Database queries gebruiken **$wpdb->prepare()** tegen SQL injection
- Chatter gebruikers hebben **geen toegang** tot normale WordPress admin pagina's
- Bezoekers worden geïdentificeerd via een **cookie** (geen persoonlijke data vereist)

---

## AJAX Endpoints

| Action | Beschrijving | Auth |
|---|---|---|
| `lsc_visitor_send` | Bezoeker stuurt bericht | Geen |
| `lsc_visitor_poll` | Bezoeker pollt voor nieuwe berichten | Geen |
| `lsc_get_status` | Haal online/offline status op | Geen |
| `lsc_chatter_poll` | Chatter pollt alle chats + berichten | `lsc_view_chats` |
| `lsc_chatter_reply` | Chatter beantwoordt chat | `lsc_reply_chats` |
| `lsc_close_chat` | Sluit een chat | `lsc_reply_chats` |
| `lsc_mark_read` | Markeer berichten als gelezen | `lsc_view_chats` |
| `lsc_toggle_status` | Zet online/offline status | `lsc_manage_chat` |
| `lsc_delete_chat` | Verwijder een chat | `lsc_manage_chat` |
