# Tikety, složky, stavy a štítky v Todomatoru

> Datový model Todomatoru: co obsahuje tiket, šest stavů, kdo může tiket vidět, složky pro zákazníky a projekty, štítky, komentáře, odkazy a přílohy.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: cs
Content-SHA256: 58f41bba7d348298b25d718b9bb96c08b2ea098f730297fb0af0c24bf300f327
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Středem Todomatoru je **tiket** (tabulka `tbl_ticket`, schéma `Tickets` v `schemas/tickets.js`). Vše ostatní tikety organizuje nebo na ně navazuje.

## Co obsahuje tiket

| Pole | Význam |
|---|---|
| `name` | název (povinný) |
| `statusid` | stav; nový tiket je `pending`, pokud neřeknete jinak |
| `folderid` | složka (zákazník nebo projekt), do které patří |
| `ownerid`, `userid`, `watcherid` | autor, přiřazení lidé a lidé, kteří jej jen sledují |
| `ispublic` | viditelný pro všechny; veřejný tiket nemá přiřazené lidi |
| `ispriority`, `isbillable` | značka priority a příznak fakturovatelnosti |
| `markdown`, `html` | obsah (rozhraní používá Markdown) |
| `tags` | seznam štítků |
| `date`, `deadline` | den tiketu (výchozí dnes) a volitelný termín |
| `estimate`, `worked` | odhad a již odpracované minuty ([sledování času](/en/todomator/time-tracking/)) |
| `reference`, `source` | volný text pro propojení tiketu s něčím vnějším |
| `parentid` | nadřazený tiket, pro podúkoly |
| `attachments` | soubory tiketu |
| `attrs` | volná data JSON |
| `callback` | adresa, která dostane tiket, když se změní ([API](/en/todomator/create-tickets-with-the-api/)) |

## Šest stavů

Tabulka `cl_status` se vytvoří s: `pending` (Pending), `open` (In progress), `review` (Review), `postponed` (Postponed), `note` (Note) a `closed` (Closed). Názvy se překládají do jazyka uživatele.

## Kdo může tiket vidět

Tiket vidí jeho vlastník, lidé v `userid`, lidé v `watcherid` a všichni, když je nastaveno `ispublic`. Seznam složek, které uživatel vidí, je omezen stejně: složka se zobrazí, jen pokud v ní uživatel vidí tiket (uživatelé se `sa` vidí všechny). Seznam tiketů přijímá `type` (například `pending`, `postponed`, `review`, `assigned`, `note`, `unread` nebo `all`), `q` (hledání), `folderid`, `date`, `skip` a `limit` (výchozí 10).

## Složky a štítky

**Složka** má název, ikonu, barvu, zákazníka, e-mail a telefon a příznaky: `isbillable` (nové tikety jej dědí), `isprivate`, `ispinned`, `isarchived` a `isdisabled`. Složky spravují jen lidé s oprávněním `admin` (nebo správci). **Štítek** má název, barvu a ikonu a může patřit do složky.

## Okolo tiketu

- **Komentáře** (`Comments|create`, `Comments|update`, `Comments|remove`): text v Markdownu připojený k tiketu.
- **Značky nepřečtených a záložky**: každý uživatel má vlastní stav nepřečteného a záložky pro tiket.
- **Odkazy** mezi tikety a **klonování** tiketu.
- **Historie a záznamy** změn tiketu.
- **Přílohy**: `POST /upload/` přijímá až 5 MB na požadavek. Adresa souboru je podepsaná (`/download/<id>-<signature>.<ext>`): obrázky, video a PDF se otevřou v prohlížeči a ostatní typy se stáhnou.
- **Živé aktualizace**: WebSocket posílá událost `refresh` jen lidem, kteří tiket vidí, a ostatním oznamuje, kdo se na tiket právě dívá.
