Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The site is everything under `source/`. Most of it is written here, but two file
| `/helm-charts/` (the Helm chart repository) | the chart packages of the `ansibleforms/helm-charts` releases, indexed at build time | the `helm-charts` repository |
| everything else in `source/` | this repository | here |

The docs are served under a language prefix (`/en/`, `/es/`), and the language selector in the header lists
The docs are served under a language prefix, its ISO 639-1 code (`/en/`, `/es/`, `/de/`...), and the language selector in the header lists
every language in `docs_languages` (`source/_config.yml`). Every page that used to live at the root keeps
its address as a redirect, written at build time by `scripts/redirects.sh`, to the reader's language: the
one they last picked, else their browser's, else English. The install script (`/install`) and the Helm chart
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ The site covers everything a user of AnsibleForms needs, from the first install
- The app's changelog, rebuilt into the site on every release
- The Helm chart repository, served under `/helm-charts/`
- The 6.x documentation, kept alongside under `/v6/`
- The docs in English and Spanish under `/en/` and `/es/`, picked from the reader's browser language
- The docs in the app's eleven languages, each under its ISO 639-1 code (`/en/`, `/es/`, `/fr/`, `/ja/`...), picked from the reader's browser language

## Previewing locally

Expand Down
42 changes: 42 additions & 0 deletions i18n/ca.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# The Catalan docs : read after source/_config.yml by scripts/build-language.sh, so only what
# differs from the English site is set here. Jekyll merges the two, nested keys included.

lang: ca
docs_language: "ca"

title: "Documentació d'AnsibleForms"
description: "Documentació tècnica d'AnsibleForms"

footer_content: "Copyright © 2023-2026 AnsibleForms. Tots els drets reservats."

# "Edit this page on GitHub" opens the Catalan page's source
gh_edit_link_text: "Edita aquesta pàgina a GitHub"
gh_edit_source: i18n/ca

just_the_docs:
collections:
introduction:
name: "Introducció"
get_started:
name: "Primers passos"
configure:
name: "Configuració"
build_forms:
name: "Creació de formularis"
use:
name: "Guia d'usuari"
integrate:
name: "Integració"
security_assessment:
name: "Seguretat"
reference:
name: "Referència"

# The version selector (_includes/version_select.html) : a list is replaced, not merged
docs_versions:
- name: "7"
title: "7.x (la més recent)"
url: "/ca/"
- name: "6"
title: "6.x (en anglès)"
url: "/v6/"
54 changes: 54 additions & 0 deletions i18n/ca/_build_forms/expressions/credentials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
layout: default
title: Credencials
parent: Expressions
nav_order: 4
translated_from: bfa50c90495c68300d189f9a0eb38e25df9e7c8e
---

# Credencials
{: .no_toc }

Llegeix una credencial desada en una expressió
{: .fs-6 .fw-300 }

---

Llegeix una credencial desada pel nom o per una expressió regular, amb una alternativa:

```javascript
fn.fnCredentials('credentialname_or_regex','fallback_credentialname_or_regex')

// Try to use `fnRestBasic` and `fnRestJwtSecure` if possible, this avoids passwords and tokens going over the network.

// output : a credential object with all properties (user, password, host, port)
```

Primer es prova el nom exacte. Si cap credencial no té aquest nom, el nom s'utilitza com a expressió regular i després es prova l'alternativa.

#### Limitat per rol

Quan un dels rols de l'usuari inclou `credentials` a `config.yaml`, `fn.fnCredentials` només retorna una credencial que aquest rol
permeti: els patrons del rol es comparen amb el nom de la credencial trobada (pel nom, per expressió regular o per l'alternativa),
i qualsevol altra es rebutja. Els rols sense la llista no la limiten, i un administrador no està mai limitat.

#### Credencials d'un magatzem de secrets

Una credencial que indica un [magatzem de secrets](../secret-stores) obté el seu `user` i el seu `password`
d'aquest magatzem en temps d'execució. `fn.fnCredentials('myapp')` continua funcionant sense canvis.

Un secret també es pot llegir sense cap fila de credencial, allà on s'accepti un nom de credencial
(inclosos `fnRestBasic`, `fnRestJwtSecure` i les substitucions de capçaleres de `fnRestAdvanced`):

```javascript
fn.fnCredentials('secret:vault:secret/ontap') // secret:<store>:<reference>
fn.fnCredentials('vault:secret/ontap') // the store named `vault`
```

Les claus del secret s'assignen tal com es descriu a [Noms de clau](../secret-stores#key-names).
Un secret amb una altra forma es transforma amb una expressió `jq` com a tercer argument:

```javascript
// secret: { "creds": { "u": "admin", "p": "Netapp12" } }
fn.fnCredentials('vault:secret/weird','','.creds | { user: .u, password: .p }')
```
76 changes: 76 additions & 0 deletions i18n/ca/_build_forms/expressions/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
layout: default
title: Expressions
nav_order: 1
has_children: true
has_toc: false
permalink: /expressions/
translated_from: 52d74e32540fba4dfa5078c8976147b39a2ad2cf
---

# Expressions
{: .no_toc }

Calcula els valors dels camps amb JavaScript, al navegador o al servidor
{: .fs-6 .fw-300 }

---

Per als autors de formularis: omple els camps de manera dinàmica amb JavaScript, calculats al navegador o obtinguts al servidor.

L'atribut `expression` d'un camp de formulari et permet crear formularis dinàmics amb expressions JavaScript.

---

## Introducció

L'atribut `expression` està disponible en diversos tipus de camp:
- camp `enum`: per omplir les opcions del desplegable de manera dinàmica
- camp `expression`: per obtenir o generar qualsevol tipus de dades
- camp `html`: per construir-ne el contingut HTML
- camps `yaml` i `list`: per omplir-ne les dades

Les expressions JavaScript s'avaluen al **costat del servidor** (per defecte) o al **costat del client**, segons el que indiqui la propietat del camp `runLocal`.
Un camp `html`, i els tipus de camp `local`, `local_out` i `credential`, sempre executen la seva expressió al navegador, digui el que digui
`runLocal`.

- **Al costat del servidor** (`runLocal: false`, el valor per defecte): funcions predefinides que obtenen dades d'API, fitxers i bases de dades.
- **Al costat del client** (`runLocal: true`): el codi aprofita tot el motor JavaScript dins de l'entorn aïllat del navegador per fer càlculs, transformacions i manipulacions.

---

## Qüestions de seguretat

Com que les expressions s'avaluen amb la funció `eval` de JavaScript, la injecció de codi és un risc potencial:

- **Les expressions del costat del servidor** passen primer per un sanejador: cada crida ha de ser una funció `fn.` o `fnc.`, i es rebutgen les línies múltiples,
el `;`, les plantilles literals, `process.env` i les maneres de sortir d'`eval` (`import`, `require`, `constructor`, ...).
- **Les expressions del costat del client** s'avaluen dins de l'entorn aïllat del navegador i es poden considerar segures.

El nivell d'exigència del sanejador depèn de
[`EXPRESSION_SANITIZER`](../customization/security.html#env_EXPRESSION_SANITIZER):

| Valor | Expressions del costat del servidor |
|---|---|
| `strict` (per defecte) | crides `fn.` i `fnc.`, i mètodes sobre el seu resultat, com ara `fn.fnTime().format('YYYY')` |
| `paranoid` | només crides directes `fn.` i `fnc.`, sense mètodes sobre el seu resultat |
| `off` | es rebutgen totes les expressions del costat del servidor; només funcionen les expressions `runLocal` |
| `legacy` | les regles de la 6.2.1, que permeten a qualsevol usuari autenticat executar codi al servidor; només per a una actualització, i només a l'entorn real (no des de la pàgina de configuració) |

Un valor buit o desconegut equival a `strict`. Un canvi s'aplica a la següent expressió, sense reiniciar.

---

## En aquesta secció

Cada tema té la seva pròpia pàgina:

| Pàgina | Què tracta |
|---|---|
| [Marcadors](placeholders.html) | Fer referència a un altre camp, a una constant o a l'usuari amb `$(...)` |
| [Expressions locals](local.html) | JavaScript que s'executa dins de l'entorn aïllat del navegador |
| [Expressions remotes](remote.html) | Funcions del costat del servidor per a dates, xarxes, fitxers, SSH i noms numerats |
| [API REST](rest-apis.html) | Cridar API REST amb autenticació bàsica, per token o personalitzada |
| [Credencials](credentials.html) | Llegir una credencial desada |
| [Ordenació](sorting.html) | Ordenar matrius amb un objecte d'ordenació |
| [Consultes jq](jq.html) | Transformar dades amb jq |
59 changes: 59 additions & 0 deletions i18n/ca/_build_forms/expressions/jq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
layout: default
title: Consultes jq
parent: Expressions
nav_order: 6
translated_from: b34dbbec6c5d115f9bb41450962c3fce9606035f
---

# Consultes jq
{: .no_toc }

Transforma dades amb jq, incloses les funcions integrades
{: .fs-6 .fw-300 }

1. TOC
{:toc}

---

## Executar una consulta JSON (jq) sobre un objecte

Transforma un objecte, per exemple el valor d'un altre camp, amb una expressió jq:

```javascript
fn.fnJq($(settings),'.mapping | keys')

// output : a full json object taken from another field called "settings", converted by jq

// fn.fnJq(object, jq)
// - object, for example read from rest or yaml file
// - jq-expression : a jq-expression (https://jqplay.org)
// - wrap the result in fn.fnSort to order it
```

A partir de la 7.3.0, un filtre jq s'executa com a màxim [`JQ_TIMEOUT_SECONDS`](../customization/security.html#env_JQ_TIMEOUT_SECONDS) (30 per defecte)
abans d'aturar-se, i la seva sortida es limita a 64 MB. Això s'aplica a `fn.fnJq` i a l'expressió jq de les funcions de REST, de fitxer,
de credencial i de consulta a base de dades.

---

## Funcions JQ integrades

Totes les funcions que obtenen dades accepten una consulta JSON (jq), un llenguatge per manipular objectes i matrius de dades.
Quan manipules dades, potser necessites convertir bytes a KB, MB o GB, o arrodonir nombres.
Per a això, AnsibleForms inclou unes quantes funcions jq pròpies:

- **fn2KB**: de bytes a KB
- **fn2MB**: de bytes a MB
- **fn2GB**: de bytes a GB
- **fnRound0**: arrodoneix amb 0 decimals
- **fnRound1**: arrodoneix amb 1 decimal
- **fnRound2**: arrodoneix amb 2 decimals
- **fnRound**: arrodoneix amb 2 decimals

```javascript
fn.fnRestBasic('get','https://youruri','','CREDS',
'[.records[] | {"Available Capacity":.storage_capacity.available | fn2GB | fnRound }]')
// note you need to pipe into the functions
```
Loading
Loading