[Intum](https://intum.pl/pomoc.md) / [Platforma twórców](https://intum.pl/pomoc/platforma-tworcow.md)

# [Publikowanie modułów - jak działa wersjonowanie](https://intum.pl/pomoc/platforma-tworcow/publikowanie-modulow-jak-dziala-wersjonowanie.md) | [API](#api)

## Jak opublikować moduł

Gdy masz gotowy moduł (oparty o stronę CMS, aplikację Noe lub bazę wiedzy), możesz go zgłosić do publikacji. Moduł zostanie sklonowany na konto systemowe i trafi do kolejki oczekujących na zatwierdzenie przez administratora.

W formularzu publikacji podajesz:
- **Kod** - unikalny identyfikator modułu (bez ukośników)
- **Ścieżka URL** - adres pod którym moduł będzie dostępny na innych kontach

Po zatwierdzeniu moduł pojawi się w sekcji Moduły (`/account/modules`) na wszystkich kontach. Administrator danego konta może go wtedy włączyć i moduł pojawi się w menu.

## Ścieżka URL - exact match i wildcard

URL modułu określa pod jakim adresem będzie dostępny. Są dwa tryby:

**Exact match** - moduł odpowiada tylko na dokładny adres:
- `raporty` - działa tylko pod `/raporty`
- `organize/panel` - działa tylko pod `/organize/panel`

**Wildcard** - URL kończący się na `/*` łapie sam adres bazowy i wszystkie podścieżki:
- `myapp/*` - działa pod `/myapp`, `/myapp/dashboard`, `/myapp/settings/profile` itd.
- Podścieżka (jeśli jest) trafia do modułu jako kontekst nawigacji

Wildcard jest przydatny gdy moduł ma własny wewnętrzny routing (np. aplikacja Noe z wieloma widokami). Exact match gdy moduł to jedna strona lub baza wiedzy.

Jeśli istnieje moduł z dokładnym URL-em i jednocześnie inny z wildcardem - dokładny ma priorytet.

## Co się dzieje z Twoją lokalną kopią

Publikacja klonuje Twój moduł - tworzy osobną kopię na koncie systemowym. Twoja lokalna wersja nadal istnieje i możesz ją dalej rozwijać.

Jeśli opublikowany moduł używa tego samego URL co Twój lokalny, to po aktywacji publicznej wersji na Twoim koncie lokalna przestanie być dostępna pod tym adresem (publiczna ma priorytet). To normalne - Twój moduł dalej istnieje, możesz zmienić mu URL albo go wyłączyć.

## Aktualizowanie opublikowanego modułu

Zmiany w lokalnym module nie wpływają na opublikowaną wersję. Jeśli poprawisz treść strony, zmienisz kod aplikacji albo dodasz nowe podstrony - użytkownicy innych kont tego nie zobaczą. Zobaczą dopiero po ponownej publikacji i zatwierdzeniu.

Żeby zaktualizować publiczną wersję:
1. Wprowadź zmiany w lokalnym module
2. Kliknij "Opublikuj" jeszcze raz - system automatycznie podpowie kod i URL z poprzedniej publikacji
3. Poczekaj na zatwierdzenie przez administratora
4. Po zatwierdzeniu stara publiczna wersja zostaje zarchiwizowana, a nowa ją zastępuje

System pamięta pod jakim kodem i URL-em moduł był publikowany, więc nawet jeśli zmienisz lokalny kod albo URL, przy kolejnej publikacji domyślnie zaproponuje te same wartości co poprzednio.

## Ochrona przed przejęciem modułu

Raz opublikowany moduł jest przypisany do konta które go stworzyło. Nikt z innego konta nie może zgłosić do publikacji modułu z tym samym kodem - system to zablokuje. Tylko konto które opublikowało oryginał może wysłać aktualizację.

To zabezpieczenie działa automatycznie i nie wymaga żadnej konfiguracji.

## Podsumowanie procesu

| Krok | Co się dzieje |
|------|---|
| Publikujesz | Kopia modułu trafia na konto systemowe ze statusem "oczekujący" |
| Admin zatwierdza | Stara wersja zostaje zarchiwizowana, nowa staje się aktywna |
| Konto aktywuje | Administrator konta włącza moduł w /account/modules i pojawia się w menu |
| Zmieniasz lokalnie | Nic - publiczna wersja się nie zmienia |
| Publikujesz ponownie | Nowa kopia trafia do zatwierdzenia, po akceptacji zastępuje starą |

---

## API

### Ogólne API

# Intum API

Dokumentacja API platformy [Intum](https://intum.pl) - system operacyjny firmy.

## Host

Host jest zawsze taki sam jak adres konta: `xxxx.intum.com` lub `xxx.intum.pl` (w zależności od ustawień konta)

## Autoryzacja

Wszystkie requesty API wymagają `api_token`:
- header: `Authorization: Bearer TOKEN`

Token możesz wygenerować w **Ustawienia Konta** → **Tokeny API**

