)
O `$result` contém o `HTTPRequest`, um status de `sucess`, uma coleção de `erros` e outros. Ver [OpenAIResult](Classes/OpenAIResult.md)
-Veja alguns exemplos abaixo.
+See some examples below.
#### Chat
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png
new file mode 100644
index 00000000000000..7c9d523d0372f1
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png
new file mode 100644
index 00000000000000..8a4a075fd1f5d3
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png
new file mode 100644
index 00000000000000..b339a988df6172
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png
new file mode 100644
index 00000000000000..fe35b22f4c5438
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png
new file mode 100644
index 00000000000000..f8ece4b7fb5fbb
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md
index 82ea07e83c1145..0efa560a6e6ade 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md
@@ -120,7 +120,11 @@ O seguinte exemplo evita uma nova conexão entre as 2 e 4 A.M.
// Método base On Server Open Connection
#DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer
- If((?02:00:00?<=Current time)&(Current time
+ If((?02:00:00?<=Current time)&(Current time04:00:00?))
+ $result:=22000
+ Else
+ $result:=0
+ End if
```
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands/new-collection.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands/new-collection.md
index 62e06ed6627541..f044c5be71860c 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/commands/new-collection.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands/new-collection.md
@@ -1,6 +1,6 @@
---
id: new-collection
-title: New collection
+title: Nova coleção
displayed_sidebar: docs
---
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md
index 36e1ccb3d6e8be..46d70881a67b8e 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos:
| Ícone | Nome | Descrição |
| ------------------------------------------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. |
-|  | [Ferramenta de selecção](#selecting-objects) | Permite selecionar, mover e redimensionar os objetos do formulário.**Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição.
|
+|  | [Ferramenta de selecção](#selecting-objects) | Allows selecting, moving and resizing form objects.
**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. |
|  | [Ordem de entrada](#selecting-objects) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. |
|  | [Deslocamento](#moving-objects) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. |
|  | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. |
@@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a
Para selecionar um objeto usando a barra de ferramentas:
-1. Clique na ferramenta Seta na barra de ferramentas.
+1. Clique na ferramenta Seta na barra de ferramentas.

-Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta
.
+
Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta.
-2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.../assets/en/FormEditor/selectResize.png
+2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.

Para selecionar um objecto utilizando a Lista de Propriedades:
@@ -235,13 +235,12 @@ O agrupamento só afeta os objetos no editor de formulários. Quando o formulár
Para agrupar objectos:
1. Selecione o objecto agrupado que pretende desagrupar.
-2. Selecione **Grupo** no menu Objeto. OU Clique no botão do Grupo na barra de ferramentas no editor de formulário:
-4D marca a borda dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo.
+2. Selecione **Grupo** no menu Objeto. OR Click the Group button in the toolbar of the Form editor:
 4D marks the boundary of the newly grouped objects with handles. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo.
Para desagrupar objetos:
1. Seleccione o objecto ou objectos que pretende duplicar.
-2. Escolher **Desagrupar** a partir do menu **Objetos**.OU
Clique no botão **Desagrupamento** (variante do botão **Grupo**) na barra de ferramentas do editor do formulário.
Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples.
4D marca os limites dos objetos individuais com alças.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca os limites dos objetos individuais com alças.
### Alinhamento de objetos
@@ -268,9 +267,10 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen
Para exibir esta caixa de diálogo, selecione os objetos que você deseja alinhar e escolha o comando **Alinhamento** a partir do menu **Alinhar** no menu **Objeto** ou no menu de contexto do editor.
-- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.A área de exemplo apresenta os resultados da sua seleção.
+- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.
A área de exemplo exibe os resultados da sua seleção.
+
+- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OR:
To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. Neste caso, a posição do objeto de referência não será alterada.
-- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada.
Pode pré-visualizar os resultados do alinhamento clicando no botão **Pré-visualização**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento.
> Esta caixa de diálogo permite-lhe alinhar e distribuir objetos numa única operação. Para mais informações sobre como distribuir objetos, consultar [Distribuir objetos](#distributing-objects).
@@ -304,7 +304,7 @@ Para distribuir objetos com igual espaçamento:
1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida.
-2. Na barra de ferramentas, clique na ferramenta de distribuição que corresponde à distribuição que você deseja aplicar.
OUSelecione um comando de distribuição no submenu **Alinear** do menu **Objeto** ou no menu contextual do editor.
4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
@@ -312,9 +312,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
2. Escolha o comando **Alinhamento** do submenu **Alinhar** no menu **Objeto** ou no menu de contexto do editor. Aparece a seguinte caixa de diálogo:
-3. Nas áreas Alinhamento Esquerdo/Direita e/ou Alinhamento Superior/Inferior, clique no ícone de distribuição padrão:  (Ícone de distribuição horizontal standard)
A área de exemplo apresenta os resultados da sua seleção.
+3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: 
(Standard horizontal distribution icon)
The example area displays the results of your selection.
-4. Para realizar uma distribuição que use o esquema padrão, clique em **Pré-visualizar** ou *Aplicar*.Neste caso 4D irá executar uma distribuição padrão, de modo que os objetos sejam definidos com a mesma quantidade de espaço entre eles.
OU:Para executar uma distribuição específica, selecione a opção **Distribuir** (por exemplo, se você quiser distribuir os objetos com base na distância até o lado direito). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:
- Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdo, centros (hor.) e lados direito dos objetos selecionados.
- Verticalmente, os ícones correspondem às seguintes distribuições: igualmente com respeito às arestas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados.
@@ -367,11 +367,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada
Para ver ou alterar a ordem de entrada:
-1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:
+1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:

O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas.
-2. Para alterar a ordem de entrada de dados, posicionar o ponteiro sobre um objeto na forma e, mantendo pressionado o botão do rato, arrastar o ponteiro para o objeto que se pretende a seguir na ordem de entrada de dados.
4D irá ajustar a ordem de entrada em conformidade.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md
index 2232b0ee3396be..7a4eddbb6334c8 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md
@@ -7,7 +7,7 @@ Um componente 4D é um conjunto de código 4D e formulários que representam uma
## Instalação de componentes
-Vários componentes são [pré-instalados no ambiente de desenvolvimento 4D](Extensions/overview.md), mas muitos componentes 4D da comunidade 4D [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories). Além disso, você pode [desenvolver seus próprios componentes 4D](Extensions/develop-components.md).
+Vários componentes são [pré-instalados no ambiente de desenvolvimento 4D](Extensions/overview.md), mas muitos componentes 4D da comunidade 4D [podem ser encontrados no GitHub](https://github.com/topics/4d-component). Além disso, você pode [desenvolver seus próprios componentes 4D](Extensions/develop-components.md).
A instalação e o carregamento de componentes em seus projetos 4D são feitos por meio do [gerenciador de dependências 4D](../Project/components.md).
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md
index 0d96fcfcb26f13..b0213ba5a93a84 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md
@@ -3,7 +3,7 @@ id: field-properties
title: Field properties
---
-For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008).
+For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html).
## Class
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md
index a4e7b6b79650c0..ade39d9cdc748e 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos:
| Ícone | Nome | Descrição |
| ------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. |
-|  | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.
|
+|  | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.
**Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição. |
|  | [Ordem de entrada](#data-entry-order) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. |
|  | [Moving](#objetos-em-movimento) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. |
|  | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. |
@@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a
Para selecionar um objeto usando a barra de ferramentas:
-1. Click the Arrow tool in the toolbar.
+1. Click the Arrow tool in the toolbar.

-Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta
.
+
When you move the pointer into the form area, it becomes a standard arrow-shaped pointer.
-2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.
+2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.
../assets/en/FormEditor/selectResize.png
Para selecionar um objecto utilizando a Lista de Propriedades:
@@ -241,13 +241,13 @@ Para agrupar objectos:
1. Selecione o objecto agrupado que pretende desagrupar.
2. Elija **Agrupar** en el menú Objetos. OU
- Clique no botão Group (Agrupar)
na barra de ferramentas do editor de formulários:
+ Clique no botão Group (Agrupar
) na barra de ferramentas do editor de formulários:
4D marca o limite dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo.
Para desagrupar objetos:
1. Seleccione o objecto ou objectos que pretende duplicar.
-2. Choose **Ungroup** from the **Object** menu.OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.
4D marca os limites dos objetos individuais com alças.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples. 4D marca os limites dos objetos individuais com alças.
### Alinhamento de objetos
@@ -275,9 +275,9 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen
Para exibir essa caixa de diálogo, selecione os objetos que deseja alinhar e escolha o comando **Alinhamento** no submenu **Alinhar** do menu **Objeto** ou no menu de contexto do editor.
-- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.The example area displays the results of your selection.
+- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
A área de exemplo apresenta os resultados da sua seleção.
-- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. In this case, the position of the reference object will not be altered.
+- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:
Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada.
Você pode visualizar os resultados do alinhamento clicando no botão **Preview**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento.
@@ -314,7 +314,8 @@ Para distribuir objetos com igual espaçamento:
1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida.
-2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
ORSelect a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
+ 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
@@ -322,9 +323,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. A seguinte caixa de diálogo é exibida:
-3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão:  (ícone padrão de distribuição horizontal)
A área de exemplo exibe os resultados da sua seleção.
+3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: 
(ícone padrão de distribuição horizontal)
A área de exemplo exibe os resultados da sua seleção.
-4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
- Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdos, centros (hor.) e os lados direito dos objetos selecionados.
- Verticalmente, os ícones correspondem às seguintes distribuições: uniformemente em relação às bordas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados.
@@ -379,11 +380,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada
Para ver ou alterar a ordem de entrada:
-1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:
+1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:

O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas.
-2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
4D will adjust the entry order accordingly.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md
index cbf8415a3b5a49..9abf540b4ddac0 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md
@@ -191,15 +191,15 @@ Em outros casos (list box baseados em seleções nomeadas, colunas associadas co
## Ação padrão
-Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*.
+Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions).
Você pode atribuir uma ação padrão e um método projeto de um objeto. Neste caso, a ação padrão é geralmente executada depois que o método e o 4D usa esta ação para ativar/desativar o objeto conforme o contexto atual. Quando um objeto é desativado, o método projeto associado não pode ser executado.
#### Gramática JSON
-| Nome | Tipo de dados | Valores possíveis |
-| ------ | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
-| action | string | O nome de uma [ação padrão válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). |
+| Nome | Tipo de dados | Valores possíveis |
+| ------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). |
#### Objectos suportados
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md
index 0ab195287b1363..e03a8ca21a49cf 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md
@@ -463,7 +463,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection
Esta função é chamada sempre que uma seleção de entidade ou uma entidade da classe de dados é solicitada. O filtro é executado uma vez, quando a entity selection é criada.
-O filtro deve retornar uma seleção de entidade da dataclass. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc.
+O filtro deve retornar uma seleção de entidade da dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc.
:::note
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md
index 89f7200ce40369..75941c87ec6b55 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md
@@ -1,6 +1,6 @@
---
id: orda-events
-title: ORDA Events
+title: Entity Events
---
História
@@ -11,13 +11,13 @@ title: ORDA Events
-ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
+Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes.
:::info Compatibility note
-ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
+ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
:::
@@ -25,7 +25,7 @@ ORDA events in the datastore are equivalent to triggers in the 4D database. Howe
### Event level
-A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class).
+A entity event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class).
It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute.
@@ -49,7 +49,7 @@ With other remote configurations (i.e. Qodly applications, [REST API requests](.
### Summary table
-The following table lists ORDA events along with their rules.
+The following table lists ORDA entity events along with their rules.
| Evento | Nível | Function name | (C/S) Executed on |
| :------------------- | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md
index c78e4286cff83c..ad35a6ee75ce9a 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md
@@ -5,7 +5,7 @@ title: Dependencies
Um componente 4D é um conjunto de código 4D e/ou formulários que representam uma ou mais funcionalidades que pode adicionar e usar nos seus projetos. Por exemplo, o componente [4D SVG](https://github.com/4d/4D-SVG) adiciona comandos avançados e um mecanismo de renderização integrado que pode ser usado para exibir arquivos SVG.
-Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories).
+Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/topics/4d-component).
Ao desenvolver em 4D, os arquivos de componentes podem ser armazenados de forma transparente no seu computador ou em um repositório do Github.
@@ -339,7 +339,7 @@ When you add or update a component (whether [local](#local-components) or [from
The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one.
-- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
+- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
:::note
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md
index c1f821ac13c915..1dbedd8c5da236 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md
@@ -201,9 +201,9 @@ Else
End if
```
-:::note
+:::tips Related blog posts
-For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post.
+[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/)
:::
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md
index 479fd15eac6a81..55feedcff520fe 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md
@@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources.
## Configuration Properties
-| Nome da propriedade | Tipo | Descrição | Opcional |
-| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------- |
-| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Não para OpenAI |
-| `baseURL` | Text | Base URL for OpenAI API requests. | Sim |
-| `organization` | Text | Your OpenAI Organization ID. | Sim |
-| `project` | Text | Your OpenAI Project ID. | Sim |
+| Nome da propriedade | Tipo | Descrição | Opcional |
+| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- |
+| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider |
+| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider) |
+| `organization` | Text | Your OpenAI Organization ID. | Sim |
+| `project` | Text | Your OpenAI Project ID. | Sim |
### Propriedades HTTP adicionais
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md
index 28426d8b6f12b8..7cb74f769f2d19 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md
@@ -7,7 +7,7 @@ title: Providers
Many AI providers propose an OpenAI-like API, so you can use this project to connect to them.
-To do so you just have to change the original `baseURL` by the provider one and use their api key if needed.
+To do so you just have to set the `baseURL` to the provider one and use their api key if needed.
```4d
$client.baseURL:="https://api.mistral.ai/v1"
@@ -17,7 +17,7 @@ Some of them
## Remoto
-| Provider | URL base |
+| Provider | baseURL |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| https://mistral.ai/ | https://api.mistral.ai/v1 |
| https://www.deepseek.com/ | https://api.deepseek.com |
@@ -31,7 +31,7 @@ Some of them
## Local
-| Provider | URL base padrão | Doc |
+| Provider | Default baseURL | Doc |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility |
| https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md
index bac8cd22b06ec4..aed3c9f5dd59b6 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md
@@ -21,7 +21,7 @@ First of all, initialize the OpenAI client using your API key
var $client:=cs.AIKit.OpenAI.new("your api key")
```
-For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter.
+For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter.
```4d
var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"})
@@ -43,7 +43,7 @@ var $result:=$client..()
O `$result` contém o `HTTPRequest`, um status de `sucess`, uma coleção de `erros` e outros. Ver [OpenAIResult](Classes/OpenAIResult.md)
-Veja alguns exemplos abaixo.
+See some examples below.
#### Chat
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md
index 82ea07e83c1145..0efa560a6e6ade 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md
@@ -120,7 +120,11 @@ O seguinte exemplo evita uma nova conexão entre as 2 e 4 A.M.
// Método base On Server Open Connection
#DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer
- If((?02:00:00?<=Current time)&(Current time
+ If((?02:00:00?<=Current time)&(Current time04:00:00?))
+ $result:=22000
+ Else
+ $result:=0
+ End if
```
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20/Concepts/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-20/Concepts/components.md
index c695c30ff0d90b..84eb7b918d34f7 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20/Concepts/components.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20/Concepts/components.md
@@ -7,7 +7,7 @@ Um componente 4D é um conjunto de código 4D e formulários que representam uma
## Onde encontrar componentes?
-Criar e instalar componentes 4D é realizado diretamente a partir de 4D. Basicamente, os componentes são geridos como [plug-ins](Concepts/plug-ins.md) de acordo com os seguintes princípios: Além disso, pode [desenvolver os seus próprios componentes 4D](Extensions/develop-components.md).
+Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Basicamente, os componentes são geridos como [plug-ins](Concepts/plug-ins.md) de acordo com os seguintes princípios: Além disso, pode [desenvolver os seus próprios componentes 4D](Extensions/develop-components.md).
## Instalação de componentes
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md
index 6fc8ffbf196945..5be02280470198 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos:
| Ícone | Nome | Descrição |
| ------------------------------------------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. |
-|  | [Ferramenta de selecção](#selecting-objects) | Permite selecionar, mover e redimensionar os objetos do formulário.**Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição.
|
+|  | [Ferramenta de selecção](#selecting-objects) | Allows selecting, moving and resizing form objects.
**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. |
|  | [Ordem de entrada](#selecting-objects) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. |
|  | [Deslocamento](#moving-objects) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. |
|  | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. |
@@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a
Para selecionar um objeto usando a barra de ferramentas:
-1. Clique na ferramenta Seta na barra de ferramentas.
+1. Clique na ferramenta Seta na barra de ferramentas.

-Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta
.
+
Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta.
-2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.../assets/en/FormEditor/selectResize.png
+2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.

Para selecionar um objecto utilizando a Lista de Propriedades:
@@ -235,13 +235,12 @@ O agrupamento só afeta os objetos no editor de formulários. Quando o formulár
Para agrupar objectos:
1. Selecione o objecto agrupado que pretende desagrupar.
-2. Selecione **Grupo** no menu Objeto. OU Clique no botão do Grupo na barra de ferramentas no editor de formulário:
-4D marca a borda dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo.
+2. Selecione **Grupo** no menu Objeto. OR Click the Group button in the toolbar of the Form editor:
 4D marks the boundary of the newly grouped objects with handles. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo.
Para desagrupar objetos:
1. Seleccione o objecto ou objectos que pretende duplicar.
-2. Escolher **Desagrupar** a partir do menu **Objetos**.OU
Clique no botão **Desagrupamento** (variante do botão **Grupo**) na barra de ferramentas do editor do formulário.
Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples.
4D marca os limites dos objetos individuais com alças.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca os limites dos objetos individuais com alças.
### Alinhamento de objetos
@@ -268,9 +267,10 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen
Para exibir esta caixa de diálogo, selecione os objetos que você deseja alinhar e escolha o comando **Alinhamento** a partir do menu **Alinhar** no menu **Objeto** ou no menu de contexto do editor.
-- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.A área de exemplo apresenta os resultados da sua seleção.
+- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.
A área de exemplo exibe os resultados da sua seleção.
+
+- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OR:
To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. Neste caso, a posição do objeto de referência não será alterada.
-- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada.
Pode pré-visualizar os resultados do alinhamento clicando no botão **Pré-visualização**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento.
> Esta caixa de diálogo permite-lhe alinhar e distribuir objetos numa única operação. Para mais informações sobre como distribuir objetos, consultar [Distribuir objetos](#distributing-objects).
@@ -304,7 +304,7 @@ Para distribuir objetos com igual espaçamento:
1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida.
-2. Na barra de ferramentas, clique na ferramenta de distribuição que corresponde à distribuição que você deseja aplicar.
OUSelecione um comando de distribuição no submenu **Alinear** do menu **Objeto** ou no menu contextual do editor.
4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
@@ -312,9 +312,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
2. Escolha o comando **Alinhamento** do submenu **Alinhar** no menu **Objeto** ou no menu de contexto do editor. Aparece a seguinte caixa de diálogo:
-3. Nas áreas Alinhamento Esquerdo/Direita e/ou Alinhamento Superior/Inferior, clique no ícone de distribuição padrão:  (Ícone de distribuição horizontal standard)
A área de exemplo apresenta os resultados da sua seleção.
+3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: 
(Standard horizontal distribution icon)
The example area displays the results of your selection.
-4. Para realizar uma distribuição que use o esquema padrão, clique em **Pré-visualizar** ou *Aplicar*.Neste caso 4D irá executar uma distribuição padrão, de modo que os objetos sejam definidos com a mesma quantidade de espaço entre eles.
OU:Para executar uma distribuição específica, selecione a opção **Distribuir** (por exemplo, se você quiser distribuir os objetos com base na distância até o lado direito). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:
- Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdo, centros (hor.) e lados direito dos objetos selecionados.
- Verticalmente, os ícones correspondem às seguintes distribuições: igualmente com respeito às arestas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados.
@@ -367,11 +367,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada
Para ver ou alterar a ordem de entrada:
-1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:
+1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:

O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas.
-2. Para alterar a ordem de entrada de dados, posicionar o ponteiro sobre um objeto na forma e, mantendo pressionado o botão do rato, arrastar o ponteiro para o objeto que se pretende a seguir na ordem de entrada de dados.
4D irá ajustar a ordem de entrada em conformidade.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md
index 59ef8f0eddf9b7..53d16f66e9a596 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md
@@ -1182,11 +1182,11 @@ If *attributePath* designates an attribute storing [**vector objects**](../API/V
In this case, the *value* parameter must be a **comparison vector object** containing the following properties:
-| Propriedade | Tipo | Descrição |
-| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| vector | [4D.Vector](../API/VectorClass.md) | Obrigatório. The vector to be compared |
-| metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:`mk cosine` (default if omitted): calculates the cosine distance between vectors.`mk dot`: calculates the dot similarity of vectors.`mk euclidean`: calculates the Euclidean distance between vectors. |
-| threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. |
+| Propriedade | Tipo | Descrição |
+| ----------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| vector | [4D.Vector](../API/VectorClass.md) | Obrigatório. The vector to be compared |
+| metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:`mk cosine` (default if omitted): calculates the cosine similarity between vectors.`mk dot`: calculates the dot similarity of vectors.`mk euclidean`: calculates the Euclidean distance between vectors. |
+| threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. |
Only a subset of **comparator** symbols are supported. Note that they compare results to the threshold value:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md
index aa53eca5061903..5b354dc41f420e 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md
@@ -1017,7 +1017,6 @@ O objeto retornado por `.lock()` contém as seguintes propriedades:
| ----------------------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dk status entity does not exist anymore` | 5 | A entidade não existe mais nos dados. Esse erro pode ocorrer nos seguintes casos:a entidade foi descartada (o carimbo foi alterado e o espaço de memória agora está livre)a entidade foi descartada e substituída por outra com outra chave primária (o carimbo foi alterado e uma nova entidade agora usa o espaço de memória). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Quando usando `. ock()`, este erro pode ser retornado quando a opção `dk reload se o carimbo mudar` é usada
**Associado statusText**: "Entidade não existe mais" |
| `dk status locked` | 3 | A entidade está bloqueada por um bloqueio pessimista.**statusText associado**: "Already locked" |
-| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require |
| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
**Associated statusText**: "Other error" |
| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).with `.save()`: error only if the `dk auto merge` option is not usedwith `.drop()`: error only if the `dk force drop if stamp changed` option is not usedwith `.lock()`: error only if the `dk reload if stamp changed` option is not used
**Associated statusText**: "Stamp has changed" |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md
index 6ea1fd129e4c34..c26001d78e0d51 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md
@@ -89,7 +89,7 @@ This function does not remove **promoted privileges** from the web process, whet
:::
-Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code).
+Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas).
#### Exemplo
@@ -388,7 +388,7 @@ This function returns True for the *privilege* if called from a function that wa
:::
-Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code).
+Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas).
With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md
index f68e3abde1e8ad..0fc243a77163dd 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md
@@ -9,7 +9,7 @@ Um componente 4D é um conjunto de código 4D e formulários que representam uma
Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md).
-Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Além disso, você pode [desenvolver seus próprios componentes 4D](../Extensions/develop-components.md).
+Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Além disso, você pode [desenvolver seus próprios componentes 4D](../Extensions/develop-components.md).
## Utilização de componentes
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md
index 0d96fcfcb26f13..b0213ba5a93a84 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md
@@ -3,7 +3,7 @@ id: field-properties
title: Field properties
---
-For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008).
+For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html).
## Class
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md
index a4e7b6b79650c0..ade39d9cdc748e 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos:
| Ícone | Nome | Descrição |
| ------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. |
-|  | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.
|
+|  | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.
**Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição. |
|  | [Ordem de entrada](#data-entry-order) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. |
|  | [Moving](#objetos-em-movimento) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. |
|  | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. |
@@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a
Para selecionar um objeto usando a barra de ferramentas:
-1. Click the Arrow tool in the toolbar.
+1. Click the Arrow tool in the toolbar.

-Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta
.
+
When you move the pointer into the form area, it becomes a standard arrow-shaped pointer.
-2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.
+2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.
../assets/en/FormEditor/selectResize.png
Para selecionar um objecto utilizando a Lista de Propriedades:
@@ -241,13 +241,13 @@ Para agrupar objectos:
1. Selecione o objecto agrupado que pretende desagrupar.
2. Elija **Agrupar** en el menú Objetos. OU
- Clique no botão Group (Agrupar)
na barra de ferramentas do editor de formulários:
+ Clique no botão Group (Agrupar
) na barra de ferramentas do editor de formulários:
4D marca o limite dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo.
Para desagrupar objetos:
1. Seleccione o objecto ou objectos que pretende duplicar.
-2. Choose **Ungroup** from the **Object** menu.OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.
4D marca os limites dos objetos individuais com alças.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples. 4D marca os limites dos objetos individuais com alças.
### Alinhamento de objetos
@@ -275,9 +275,9 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen
Para exibir essa caixa de diálogo, selecione os objetos que deseja alinhar e escolha o comando **Alinhamento** no submenu **Alinhar** do menu **Objeto** ou no menu de contexto do editor.
-- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.The example area displays the results of your selection.
+- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
A área de exemplo apresenta os resultados da sua seleção.
-- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. In this case, the position of the reference object will not be altered.
+- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:
Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada.
Você pode visualizar os resultados do alinhamento clicando no botão **Preview**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento.
@@ -314,7 +314,8 @@ Para distribuir objetos com igual espaçamento:
1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida.
-2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
ORSelect a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
+ 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência.
Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
@@ -322,9 +323,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir:
2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. A seguinte caixa de diálogo é exibida:
-3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão:  (ícone padrão de distribuição horizontal)
A área de exemplo exibe os resultados da sua seleção.
+3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: 
(ícone padrão de distribuição horizontal)
A área de exemplo exibe os resultados da sua seleção.
-4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
- Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdos, centros (hor.) e os lados direito dos objetos selecionados.
- Verticalmente, os ícones correspondem às seguintes distribuições: uniformemente em relação às bordas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados.
@@ -379,11 +380,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada
Para ver ou alterar a ordem de entrada:
-1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:
+1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:

O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas.
-2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
4D will adjust the entry order accordingly.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md
index 1138d8154a484c..e0f5a4167e9998 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md
@@ -100,6 +100,12 @@ Um formulário de múltiplas páginas possui tanto uma página de fundo quanto v
On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces.
+Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications.
+
+| Light theme | Dark theme |
+| --------------------------------------- | -------------------------------------------- |
+|  |  |
+
:::caution Prévia do desenvolvedor
Fluent UI support is currently in the Developer Preview phase. Não deve ser usado na produção.
@@ -112,20 +118,18 @@ This feature can only be used on Windows. On macOS, it is ignored.
:::
-### Fluent UI rendering availability
+:::tip Related blog post
+
+[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui)
-The Fluent UI rendering is available in the following execution environments only:
+:::
-- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms).
-- Fusionado aplicación 4D [autónomo](../Desktop/building.md#build-stand-alone-application) o [cliente](../Desktop/building.md#build-client-application)
-- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu.
+### Requisitos
-:::note
+The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms.
If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error.
-:::
-
### Enabling the Fluent UI rendering
You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting.
@@ -149,19 +153,23 @@ Each form can define its own rendering via the **Widget appearance** property. A
The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false".
-### Features and limitations
-
-Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications.
+### Specific behaviors
When using 4D forms with Fluent UI rendering, you need to pay attention to the following points:
-- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned.
+- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned.
- If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting).
- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus.
-- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md).
- [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md).
- [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS).
- The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine.
+- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md).
+
+:::info Limitations
+
+This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui).
+
+:::
## Formulários herdados
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md
index cbf8415a3b5a49..9abf540b4ddac0 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md
@@ -191,15 +191,15 @@ Em outros casos (list box baseados em seleções nomeadas, colunas associadas co
## Ação padrão
-Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*.
+Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions).
Você pode atribuir uma ação padrão e um método projeto de um objeto. Neste caso, a ação padrão é geralmente executada depois que o método e o 4D usa esta ação para ativar/desativar o objeto conforme o contexto atual. Quando um objeto é desativado, o método projeto associado não pode ser executado.
#### Gramática JSON
-| Nome | Tipo de dados | Valores possíveis |
-| ------ | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
-| action | string | O nome de uma [ação padrão válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). |
+| Nome | Tipo de dados | Valores possíveis |
+| ------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). |
#### Objectos suportados
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md
index 2ddb2e25800354..3bbe0bf92d5a73 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md
@@ -26,6 +26,7 @@ Leia [**O que há de novo no 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/
- Línguagem 4D:
- New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md).
- [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix).
+- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21): list of all bugs that have been fixed in 4D 21.
#### Prévia do desenvolvedor
@@ -43,7 +44,7 @@ Leia [**O que há de novo no 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/
- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore.
- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md).
- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms.
-- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
+- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview.md#components-developed-by-4d)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:

\- **Import**: import automatically 4D components as dependencies to the project
\- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
@@ -175,7 +176,7 @@ Leia [**O que há de novo no 4D 20 R6**](https://blog.4d.com/en-whats-new-in-4d-
#### Destaques
- Operadores de comparação nas [referências a objetos](../Concepts/dt_object.md#object-operators) e nas [referências a coleções](../Concepts/dt_collection.md#collection-operators). [`collection.query()`](../API/CollectionClass.md#query) now supports [object and collection references as query values](../API/CollectionClass.md#object-or-collection-reference-as-value).
-- When a component has a [declared namespace](../Extensions/develop-components.md#declaring-the-component-namespace), its classes are now automatically shared between all loaded components in the host project via [`cs.`](../Concepts/classes.md#cs).
+- Quando um componente tiver um [declared namespace](../Extensions/develop-components.md#declaring-the-component-namespace), suas classes agora são automaticamente compartilhadas entre todos os componentes carregados no projeto host por meio de [`cs.`](../Concepts/classes.md#cs).
- Gerenciador de componentes: suporte de [componentes armazenados no GitHub](../Project/components.md#components-stored-on-github).
- Novo [`entitySeletion. lean()`](../API/EntitySelectionClass.md#clean) função e [`$clean`](../REST/$clean.md) REST API para obter uma nova seleção de entidade baseada na seleção da entidade original, mas sem as entidades excluídas.
- Nova função [`session.getPrivileges()`](../API/SessionClass.md#getprivileges) e [`$info/privileges`](../REST/$info.md) API REST para inspecionar os privilégios de sessão para uma depuração mais fácil.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md
index 647fe5f0082093..e03a8ca21a49cf 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md
@@ -463,7 +463,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection
Esta função é chamada sempre que uma seleção de entidade ou uma entidade da classe de dados é solicitada. O filtro é executado uma vez, quando a entity selection é criada.
-O filtro deve retornar uma seleção de entidade da dataclass. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc.
+O filtro deve retornar uma seleção de entidade da dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc.
:::note
@@ -565,7 +565,7 @@ Esse mecanismo automático baseia-se no conceito de "bloqueio otimista", sendo p
O diagrama seguinte ilustra o bloqueio otimista:
-1. Dois processos carregam a mesma entidade.

+1. Two processes load the same entity.

2. O primeiro processo modifica a entidade e valida a alteração. Se llama al método `entity.save( )`. O mecanismo 4D compara automaticamente o valor do carimbo interno da entidade modificada com o da entidade armazenada nos dados. Since they match, the entity is saved and its stamp value is incremented.

diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md
index dcd8c2c2b70e98..d95347972ed07a 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md
@@ -1,6 +1,6 @@
---
id: orda-events
-title: Events
+title: Entity Events
---
História
@@ -12,19 +12,19 @@ title: Events
-ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
+Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes.
:::tip Related blog post
-[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions)
+[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations)
:::
:::info Compatibility note
-ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
+ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
:::
@@ -52,7 +52,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always
:::
-With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below).
+With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below).
### Summary table
@@ -102,19 +102,19 @@ When an error occurs in an event, the other events are stopped at the first rais
### Error object properties
-| Propriedade | Tipo | Descrição | Set by the developer |
-| ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
-| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sim |
-| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sim |
-| extraDescription | Object | Free information to set up | Sim |
-| seriousError | Parâmetros | Used only with validate events (see below). Will insert a specific `status` value in the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) function:If true: `dk status serious validation error`If false: `dk status validation failed` | Yes (default is false) |
-| componentSignature | Text | Always "DBEV" | Não |
+| Propriedade | Tipo | Descrição | Set by the developer |
+| ------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
+| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sim |
+| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sim |
+| extraDescription | Object | Free information to set up | Sim |
+| seriousError | Parâmetros | Used only with validate events (see below). `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status`False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status | Yes (default is false) |
+| componentSignature | Text | Always "DBEV" | Não |
-- The errors are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions.
-- In case of an error triggered by a **validate** event, the `fatalError` property allows you to insert a specific `status` and its associated `statusText` in the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions:
- - If **false**: `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". Such errors do not require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command.
- - If **true**: `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". Such errors require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. They are raised at the end of the event and reach the client requesting the save/drop action (REST client for example).
-- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error (`dk status serious error`) whatever the `seriousError` property value.
+- [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions.
+- In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate:
+ - If **true**: a serious error is thrown and should be handled by the [error processing code](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), such as a [try catch](../Concepts/error-handling.md#trycatchend-try). In the result object of the calling function, `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". The error is raised at the end of the event and reach the client requesting the save/drop action (REST client for example).
+ - If **false** (default): a [silent (predictable) error is generated](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). It does not trigger any exception and is not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. In the result object of the calling function, `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error".
+- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error whatever the `seriousError` property value.
## Event function description
@@ -139,7 +139,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi
- the user sets a value on a 4D form,
- the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`).
- in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md).
-- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event.
+- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event.
- with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`)
The function receives an [*event* object](#event-parameter) as parameter.
@@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`).
#### Exemplo
-In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action.
+In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action.
```4d
// ProductsEntity class
+//
+// validateSave event at attribute level
Function event validateSave margin($event : Object) : Object
var $result : Object
-var $marginAverage : Real
-$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin")
-
-If (This.margin<$marginAverage)
- $result:={\
- errCode: 1; \
- message: "The margin of this product ("+String(This.margin)+") is under the average"; \
- extraDescription: {\
- info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\
- fatalError: False}
+//The user can't create a product whose margin is < 50%
+If (This.margin<50)
+ $result:={errCode: 1; message: "The validation of this product failed"; \
+ extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False}
End if
-
return $result
```
@@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro
#### Exemplo
-When a product is saved, some information is logged to an external system which may be unavailable.
+When a file is saved on disk, catch errors related to disk space for example.
```4d
-Function event saving($event : Object) : Object
+// ProductsEntity class
+// saving event at attribute level
+Function event saving userManualPath($event : Object) : Object
-var $result; $status : Object
-var $log : cs.Entity
-var $remote : 4D.DataStoreImplementation
-
-Try
- $remote:=Open datastore({hostname: "events@acme.com"}; "logs")
- $log:=$remote.Logs.new()
- $log.productId:=This.ID
- $log.stamp:=Timestamp
- $log.event:="Created by "+Current user()
- $status:=$log.save()
-Catch
- $result:={\
- errCode: Last errors.last().errCode;\
- message: Last errors.last().message; \
- extraDescription: {info: "The external Logs can't be reached"}}
-End try
+var $result : Object
+var $userManualFile : 4D.File
+var $fileCreated : Boolean
+
+If (This.userManualPath#"")
+ $userManualFile:=File(This.userManualPath)
+
+ // The user manual document file is created on the disk
+ // This may fail if no more space is available
+ Try
+ $fileCreated:=$userManualFile.create()
+ Catch
+ // No more room on disk for example
+ $result:={/
+ errCode: 1; message: "Error during the save action for this product"; /
+ extraDescription: {info: "There is no available space on disk to store the user manual"}/
+ }
+ End try
+End if
return $result
-
```
### `Function event afterSave`
@@ -454,29 +452,25 @@ The function receives an [*event* object](#event-parameter) as parameter.
- To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error.
- Throwing an [error object](#error-object) is **not supported** by this function.
-#### Exemplo 1
+#### Exemplo
-If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later.
+If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event:
```4d
// ProductsEntity class
Function event afterSave($event : Object)
-var $failure : cs.ProductsInFailureEntity
-var $status : Object
-
- // $event.status.errors is filled if the error comes from a validateSave event
If (($event.status.success=False) && ($event.status.errors=Null))
- $failure:=ds.ProductsInFailure.new()
- $failure.name:=This.name
- $failure.category:=This.category
- $failure.costPrice:=This.costPrice
- $failure.retailPrice:=This.retailPrice
- $failure.reason:="Error during the save action"
- $failure.stamp:=Timestamp
- $status:=$failure.save()
-End if
-
+ // $event.status.errors is filled if the error comes from the validateSave event
+
+ // The userManualPath attribute has not been properly saved
+ // Its value is reset
+ If ($event.savedAttributes.indexOf("userManualPath")=-1)
+ This.userManualPath:=""
+ This.status:="KO"
+ End if
+
+End if
```
### `Function event validateDrop`
@@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you
To stop the action, the code of the function must return an [error object](#error-object).
-#### Exemplo 1
+#### Exemplo
-Products can be deleted only if they have been flagged TO DELETE.
+In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action.
```4d
- //ProductsEntity class
-Function event validateDrop status($event : Object) : Object
-
-If (This.status != "TO DELETE")
-
- var $result:= New object()
- $result.errCode:=1
- $result.message:="The record can't be deleted"
- $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"}
- $result.fatalError:=False
- return $result
-End if
-```
+// ProductsEntity class
-#### Exemplo 2
+Function event validateDrop status($event : Object) : Object
-The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3.
+var $result : Object
-```4d
- //ProductsEntity class
-Function event validateDrop($event : Object) : Object
-
-var $yearOffSet : Integer
-$yearOffSet:=Year of(Current date)-3
-
-If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet))
- var $result:=New object()
- $result.errCode:=1
- $result.message:="The record can't be deleted"
- $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)}
- $result.fatalError:=False
- return $result
+// Products must be marked as TO DELETE to be dropped
+If (This.status#"TO DELETE")
+ $result:={errCode: 1; message: "You can't drop this product"; \
+ extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False}
End if
+
+return $result
```
### `Function event dropping`
@@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali
To stop the action, the code of the function must return an [error object](#error-object).
-#### Exemplo 1
+#### Exemplo
-When dropping an order with *totalPrice >= 500*, a log file is updated.
+Here is an example of `dropping` event at entity level:
```4d
- //OrderEntity class
-Function event dropping totalPrice ($event : Object)
-
-var $log : cs.LogEntity
-var $status: Object
-
-If (This.totalPrice >= 500)
-
- $log:=ds.Log.new()
- $log.orderID:=This.ID
- $log.orderPrice:=This.totalPrice
- $log.event:="Drop"
- $log.creationDate:=Current date()
- $status:=$log.save()
-
- If($status.success=False)
- throw ({errCode: 1; message: "Error while updating the log file"})
- End if
-End if
-
-```
-
-#### Exemplo 2
-
-When a product is dropped, a log file is updated.
+// ProductsEntity class
+Function event dropping($event : Object) : Object
-```4d
- //ProductsEntity class
-Function event dropping ($event : Object)
+var $result : Object
+var $userManualFile : 4D.File
-var $log : cs.LogEntity
-var $status: Object
+$userManualFile:=File(This.userManualPath)
-$log:=ds.Log.new()
-$log.productID:=This.ID
-$log.productPrice:=This.price
-$log.event:="Drop"
-$log.creationDate:=Current date()
-$status:=$log.save()
+ // When dropping a product, its user manual is also deleted on the disk
+ // This action may fail
+Try
+ If ($userManualFile.exists)
+ $userManualFile.delete()
+ End if
+Catch
+ // Dropping the user manual failed
+ $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}}
+End try
-If($status.success=False)
- throw ({errCode: 1; message:"Error while updating the log file"})
-End if
+return $result
```
### `Function event afterDrop`
@@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory.
:::
-#### Exemplo 1
+#### Exemplo
-Send a mail to the customer with the details of the dropped order.
+If the drop action failed, then the product must be checked manually:
```4d
- //OrderEntity class
-Function event afterDrop ($event : Object)
-
-var $oAuth2 : cs.NetKit.OAuth2Provider
-var $google : cs.NetKit.Google
-
- //$param contains clientId, secretId...
-$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
-$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"})
-
- //Email creation
-$email:=New object
-$email.from:="youremail@gmail.com"
-$email.to:="destinationmail@mail.com"
-$email.subject:="Your order is cancelled"
-$email.textBody:="Products numbers: " + This.products.number.join("-")
-
- //Email sending
-$status:=$google.mail.send($email)
-```
-
-#### Exemplo 2
+Function event afterDrop($event : Object)
-Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event.
+var $status : Object
-```4d
- //ProductEntity class
-Function event afterDrop ($event : Object)
-
-var $action: cs.ActionEntity
-var $status: Object
-
- // The drop action failed
-If($event.dropStatus = "failed")
- $action:=ds.Action.new()
- $action.label:=Last errors.first().message //message is "Error while dropping product XXX"
- $action.status:="TO CHECK"
- $status:=$action.save()
-End if
+If (($event.status.success=False) && ($event.status.errors=Null))
+ //$event.status.errors is filled
+ //if the error comes from the validateDrop event
+ This.status:="Check this product - Drop action failed"
+ $status:=This.save()
+End if
```
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md
index b6c05fefa599fc..26d5677b930cd9 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md
@@ -5,7 +5,7 @@ title: Dependencies
A [arquitetura dos projetos](../Project/architecture.md) 4D é modular. Você pode fornecer funcionalidades adicionais aos seus projetos 4D instalando [**componentes**](Concepts/components.md) e [**plug-ins**](Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md).
-Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories).
+Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/topics/4d-component).
Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties.
@@ -326,7 +326,7 @@ When you add or update a component (whether [local](#local-components) or [from
The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one.
-- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
+- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
:::note
@@ -349,7 +349,7 @@ Para exibir o painel Dependências:
- Com 4D, selecione o item de menu **Design/Project Dependencies** (ambiente de desenvolvimento),

-- com o servidor 4D, selecione o item de menu **dependência do Window/Projeto**.
+- com 4D Server, selecione o item de menu **Janela/Dependências do projeto**.

O painel de Dependências é exibido em seguida. Dependências são classificadas por nome em ordem alfabética:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md
index 095aab2c43c2a8..01f9c75981cdbe 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md
@@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param
The *vectorComparison* parameter is a collection of the following elements:
-| Propriedade | Tipo | Descrição | |
-| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [].vector | Uma coleção de objetos) | Obrigatório. A collection that represents the vector to compare | |
-| [].metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:"cosine" (default if omitted): calculates the cosine distance between vectors."dot": calculates the dot similarity of vectors."euclidean": calculates the Euclidean distance between vectors. | |
-| | [].threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. |
+| Propriedade | Tipo | Descrição |
+| -------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [].vector | Collection of numbers | Obrigatório. A collection that represents the vector to compare |
+| [].metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:"cosine" (default if omitted): calculates the cosine similarity between vectors."dot": calculates the dot similarity of vectors."euclidean": calculates the Euclidean distance between vectors. |
+| [].threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. |
Only a subset of **comparator** symbols are supported with vector comparisons. Note that they compare results to the threshold value:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md
index d21437b56a1f5a..8338676845ead1 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md
@@ -195,7 +195,8 @@ Se surgir um problema ao adicionar ou modificar uma entidade, ser-lhe-á enviado
- **Las fechas** deben expresarse en formato JS: YYYY-MM-DDTHH:MM:SSZ (por ejemplo, "2010-10-05T23:00:00Z"). Se tiver selecionado a propriedade Apenas data para o seu atributo Data, o fuso horário e a hora (hora, minutos e segundos) serão removidos. Neste caso, também pode enviar a data no formato que lhe é devolvido dd!mm!yyyy (por exemplo, 05!10!2013).
- **Booleanos** son true o false.
-- Los archivos subidos mediante `$upload` pueden aplicarse a un atributo de tipo Imagen o BLOB pasando el objeto devuelto en el siguiente formato `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}`:::
+- Arquivos carregados usando `$upload` podem ser aplicados a um atributo do tipo Imagem ou BLOB passando o objeto retornado no seguinte formato `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}`
+ :::
### Exemplo
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md
index e16223fade7d46..ad799b3abf413b 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md
@@ -31,10 +31,10 @@ Em *rangeObj*, passe o intervalo de células com os valores, a formatação e as
Você pode passar um parâmetro *options* opcional com as seguintes propriedades:
-| Propriedade | Tipo | Descrição |
-| ----------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| copy | Parâmetros | *Verdadeiro* (padrão) para manter os valores copiados, a formatação e as fórmulas após a execução do comando. *Falso* para removê-los. |
-| copyOptions | Integer | Especifica o que é copiado ou movido. Valores possíveis: | Valor | Descrição |
|---|
| `vk clipboard options all` (padrão) | Copia todos os objetos de dados, incluindo valores, formatação e fórmulas. |
| `vk clipboard options formatting` | Copia somente a formatação. |
| `vk clipboard options formulas` | Copia somente as fórmulas. |
| `vk clipboard options formulas and formatting` | Copia as fórmulas e a formatação. |
| `vk clipboard options values` | Copia apenas os valores. |
| `vk clipboard options value and formatting` | Copia os valores e a formatação. |
|
+| Propriedade | Tipo | Descrição |
+| ----------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| copy | Parâmetros | *Verdadeiro* (padrão) para manter os valores copiados, a formatação e as fórmulas após a execução do comando. *Falso* para removê-los. |
+| copyOptions | Integer | Especifica o que é copiado ou movido. Possible values: | Value | Description |
|---|
| `vk clipboard options all` (default) | Copies all data objects, including values, formatting, and formulas. |
| `vk clipboard options formatting` | Copies only the formatting. |
| `vk clipboard options formulas` | Copies only the formulas. |
| `vk clipboard options formulas and formatting` | Copies the formulas and formatting. |
| `vk clipboard options values` | Copies only the values. |
| `vk clipboard options value and formatting` | Copies the values and formatting. |
|
As opções de colagem definidas nas [opções de workbook](#vp-set-workbook-options) são tomadas em conta.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md
index 1d1a768c2882b6..141ba019a958c3 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md
@@ -16,7 +16,7 @@ title: VP EXPORT TO BLOB
## Descrição
-The `VP EXPORT TO BLOB` command exports the *vpAreaName* 4D View Pro document in a 4D.Blob according to the *paramObj* options. The exported blob is available through the export callback. A exportação e importação de áreas do 4D View Pro como blobs é rápida e eficiente em termos de memória.
+O comando `VP EXPORT TO BLOB` exporta o documento *vpAreaName* 4D View Pro em um 4D.Blob de acordo com as opções *paramObj*. O blob exportado está disponível por meio da chamada de retorno de exportação. A exportação e importação de áreas do 4D View Pro como blobs é rápida e eficiente em termos de memória.
Em *paramObj*, você pode passar várias propriedades:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md
index 65c8d2a7a3aa81..11f9f624e61105 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md
@@ -66,7 +66,7 @@ A tabela seguinte lista as opções de libro disponíveis:
| newTabVisible | boolean | Apresentar um separador especial para permitir que os usuários insiram novas folhas. |
| numbersFitMode | number | Muda o modo de exibição quando a largura de dados/data é maior que a largura da coluna. Available values: | Constant | Value | Description |
|---|
| vk numbers fit mode mask | 0 | Replace data content with "###" and shows tip |
| vk numbers fit mode overflow | 1 | Display data content as a string. If next cell is empty, overflow the content. |
|
| pasteSkipInvisibleRange | boolean | Paste or skip pasting data in invisible ranges: - False (default): paste data
- True: Skip pasting in invisible ranges
See [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) for more information on invisible ranges. |
-| referenceStyle | number | Estilo para referências de células e intervalos em fórmulas de células. Valores disponíveis: | Constante | Valor | Descrição |
|---|
| vk reference style A1 | 0 | Usar o estilo A1. |
| vk reference style R1C1 | 1 | Usar o estilo R1C1 |
|
+| referenceStyle | number | Estilo para referências de células e intervalos em fórmulas de células. Available values: | Constant | Value | Description |
|---|
| vk reference style A1 | 0 | Use A1 style. |
| vk reference style R1C1 | 1 | Use R1C1 style |
|
| resizeZeroIndicator | number | Política de desenho quando a linha ou coluna é redimensionada para zero. Available values: | Constant | Value | Description |
|---|
| vk resize zero indicator default | 0 | Uses the current drawing policy when the row or column is resized to zero. |
| vk resize zero indicator enhanced | 1 | Draws two short lines when the row or column is resized to zero. |
|
| rowResizeMode | number | A forma como as linhas são redimensionadas. Os valores disponíveis são os mesmos que columnResizeMode |
| scrollbarAppearance | number | Aspeto da barra de deslocação. Available values: | Constant | Value | Description |
|---|
| vk scrollbar appearance mobile | 1 | Mobile scrollbar appearance. |
| vk scrollbar appearance skin (default) | 0 | Excel-like classic scrollbar appearance. |
|
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md
index a8c220ccb23587..2d09d0687cbba6 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md
@@ -64,12 +64,17 @@ The following action keywords are supported:
### Non-modifiable headers
-The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions:
+Some headers could not be added, modified or removed:
-- "Date",
-- "Content-Length"
+| Header | Add | Set | Remove |
+| ---------------- | --- | ---------- | ------ |
+| Date | Não | Não | Não |
+| Content-Length | Não | Não | Não |
+| Content-Encoding | Não | Não | Não |
+| Vary | Sim | Não | Não |
+| Set-Cookie | Sim | Add cookie | Não |
-Modifying these headers do not generate errors, however modifications will be ignored.
+Unauthorized changes on these headers do not generate errors, however modifications will be ignored.
### Current rules
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md
index 146662cec4481d..d1108f678dd9b7 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md
@@ -138,7 +138,8 @@ There is no direct compatibility between apps implemented with 4D and apps imple
| Depurador | 4D IDE debugger
*4D Server only*: Qodly Studio debugger (see [this paragraph](#using-qodly-debugger-on-4d-server)) | Depurador Qodly Studio |
| Funções e privilégios REST/Web | roles.json direct edit/Qodly Studio roles and privileges editor | Qodly Studio role and privileges editor |
-Note that in 4D single-user, if you open some 4D code with the Qodly Studio code editor, syntax coloring is not available and a "Lsp not loaded" warning is displayed. (1) The **Model** item is disabled in Qodly Studio.
+(1) O item **Modelo** está desativado no Qodly Studio.
+(2) No servidor 4D, a abertura de código 4D com o editor de código Qodly Studio é suportada **para fins de teste e depuração** (veja [esse parágrafo](#development-and-deployment)). (1) The **Model** item is disabled in Qodly Studio.
(2) In 4D Server, opening 4D code with the Qodly Studio code editor is supported **for testing and debugging purposes** (see [this paragraph](#development-and-deployment)).
### Línguagem
@@ -235,7 +236,7 @@ O projeto deve estar sendo executado no modo interpretado para que o item de men
:::
-2. Na barra de ferramentas do Qodly Studio, clique no botão **Debug**.
+2. Na barra de ferramentas Qodly Studio, clique no botão **Debug**.

If the debug session starts successfully, a green bullet appears on the button label  and you can use the Qodly Studio debugger.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md
index 2471ddb6831c51..1a02e189b920b6 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md
@@ -201,9 +201,9 @@ Else
End if
```
-:::note
+:::tips Related blog posts
-For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post.
+[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/)
:::
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md
index e6222856a3d812..ea0060dd3c63c8 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md
@@ -625,9 +625,9 @@ Em alguns casos, outras funções internas otimizadas podem ser invocadas. As li
Duas opções permitem que você defina como funcionam as conexões persistentes:
-- **Number of requests by connection**: Allows you to set the maximum number of requests and responses able to travel over a connection keep alive. Limiting the number of requests per connection allows you to prevent server flooding due to a large number of incoming requests (a technique used by hackers).
+- **Number of requests by connection**: Allows you to set the maximum number of requests and responses able to travel over a connection keep alive. Limitar o número de solicitações por conexão permite que você evite a inundação do servidor devido a um grande número de solicitações recebidas (uma técnica usada por hackers).
The default value (100) can be increased or decreased depending on the resources of the machine hosting the 4D Web Server.
-- **Timeout**: This value defines the maximum wait period (in seconds) during which the web server maintains an open TCP connection without receiving any requests from the web browser. Once this period is over, the server closes the connection.
- If the web browser sends a request after the connection is closed, a new TCP connection is automatically created. Esta operação não é visível para o usuário.
+- **Timeout**: This value defines the maximum wait period (in seconds) during which the web server maintains an open TCP connection without receiving any requests from the web browser. Quando este período acabar, o servidor fecha a conexão.
+ Se o navegador da web enviar um pedido depois que a conexão for fechada, uma nova conexão TCP será criada automaticamente. Esta operação não é visível para o usuário.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md
index 124392c8b62474..988c667a79fcaf 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md
@@ -20,7 +20,7 @@ displayed_sidebar: docs
## Descrição
-The **WP Add picture** command anchors the picture passed as parameter at a fixed location within the specified *wpDoc* and returns its reference. The returned reference can then be passed to the [WP SET ATTRIBUTES](wp-set-attributes.md) command to move the picture to any location in *wpDoc* (page, section, header, footer, etc.) with a defined layer, size, etc.
+O comando **WP Adicionar imagem** ancora a imagem passada como parâmetro em um local fixo dentro do *wpDoc* especificado e retorna sua referência. A referência retornada pode ser passada para o comando [WP SET ATTRIBUTES](wp-set-attributes.md) para mover a imagem para qualquer local em *wpDoc* (página, seção, cabeçalho, rodapé, etc.) with a defined layer, size, etc.
Em *wpDoc*, passe o nome de um objeto documento 4D Write Pro.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md
index 20e7d6838d5ae9..f38e886e2ec987 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md
@@ -52,25 +52,25 @@ Você pode omitir o parâmetro *format*, neste caso você precisa especificar a
Pass an [object](# "Data structured as a native 4D object") in *option* containing the values to define the properties of the exported document. As seguintes propriedades estão disponíveis:
-| Parâmetros | Valor | Comentário |
-| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. |
-| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values: true (default): Pictures are embedded in the exported .svg filefalse: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted |
-| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](#wk-factur-x-object)). |
-| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. |
-| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values: false (default): No google fonts import rule is added.true: Adds the @import rule to the exported file. Useful if you want to use fonts that are not available by default on Windows or macOS. **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. |
-| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. |
-| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 |
-| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values: `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)`wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). If a picture contains more than one format, the format for screen rendering is used. **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). |
-| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. |
-| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values: `wk pdfa2`: Exports to version "PDF/A-2" `wk pdfa3`: Exports to version "PDF/A-3" **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. |
-| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:true - Valor padrão. All formulas are recomputedfalse - Do not recompute formulas |
-| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False |
-| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: True If value is False, missing image elements will not be displayed at all even if they have borders, width, height, or background; this may impact the page layout for inline images. |
-| wk visible footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
-| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
-| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False |
-| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". |
+| Parâmetros | Valor | Comentário |
+| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. |
+| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values: true (default): Pictures are embedded in the exported .svg filefalse: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted |
+| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](#wk-factur-x-object)). |
+| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. |
+| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values: false (default): No google fonts import rule is added.true: Adds the @import rule to the exported file. Útil se você quiser usar fontes que não estão disponíveis por padrão no Windows ou macOS. **Nota:** Essa propriedade é definida como falso por padrão porque quando habilitada As fontes do Google substituem fontes nativas, e as fontes nativas são geralmente melhor renderizadas no navegador. |
+| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. |
+| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 |
+| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values: `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)`wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). Se uma imagem contiver mais de um formato, será utilizado o formato para a renderização de tela. U **Nota:** Documentos exportados em formato `wk docx` são sempre otimizados para impressão wk (wk otimizado para opção é ignorado). |
+| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. |
+| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values: `wk pdfa2`: Exports to version "PDF/A-2" `wk pdfa3`: Exports to version "PDF/A-3" **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. |
+| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:true - Valor padrão. All formulas are recomputedfalse - Do not recompute formulas |
+| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False |
+| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: True If value is False, missing image elements will not be displayed at all even if they have borders, width, height, or background; this may impact the page layout for inline images. |
+| wk visible footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
+| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
+| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False |
+| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". |
A tabela a seguir indica a *option* disponível por *format* de exportação:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
index 90eb441c3f302c..db8472c40d9d5e 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
@@ -52,25 +52,25 @@ In the *format* parameter, pass a constant from the *4D Write Pro Constants* the
Pass an [object](# "Data structured as a native 4D object") in *option* containing the values to define the properties of the exported document. As seguintes propriedades estão disponíveis:
-| Parâmetros | Valor | Comentário |
-| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. |
-| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values: true (default): Pictures are embedded in the exported .svg filefalse: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted |
-| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](./wp-export-document.md#wk-factur-x-object)). |
-| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](./wp-export-document.md#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. |
-| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values: false (default): No google fonts import rule is added.true: Adds the @import rule to the exported file. Useful if you want to use fonts that are not available by default on Windows or macOS. **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. |
-| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. |
-| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 |
-| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values: `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)`wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). If a picture contains more than one format, the format for screen rendering is used. **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). |
-| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. |
-| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values: `wk pdfa2`: Exports to version "PDF/A-2" `wk pdfa3`: Exports to version "PDF/A-3" **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. |
-| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:true - Valor padrão. All formulas are recomputedfalse - Do not recompute formulas |
-| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False |
-| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: True If value is False, missing image elements will not be displayed at all even if they have borders, width, height, or background; this may impact the page layout for inline images. |
-| wk visible footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
-| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
-| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False |
-| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". |
+| Parâmetros | Valor | Comentário |
+| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. |
+| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values: true (default): Pictures are embedded in the exported .svg filefalse: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted |
+| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](./wp-export-document.md#wk-factur-x-object)). |
+| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](./wp-export-document.md#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. |
+| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values: false (default): No google fonts import rule is added.true: Adds the @import rule to the exported file. Útil se você quiser usar fontes que não estão disponíveis por padrão no Windows ou macOS. **Nota:** Essa propriedade é definida como falso por padrão porque quando habilitada As fontes do Google substituem fontes nativas, e as fontes nativas são geralmente melhor renderizadas no navegador. |
+| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. |
+| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 |
+| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values: `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)`wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). Se uma imagem contiver mais de um formato, será utilizado o formato para a renderização de tela. U **Nota:** Documentos exportados em formato `wk docx` são sempre otimizados para impressão wk (wk otimizado para opção é ignorado). |
+| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. |
+| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values: `wk pdfa2`: Exports to version "PDF/A-2" `wk pdfa3`: Exports to version "PDF/A-3" **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. |
+| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:true - Valor padrão. All formulas are recomputedfalse - Do not recompute formulas |
+| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False |
+| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: True If value is False, missing image elements will not be displayed at all even if they have borders, width, height, or background; this may impact the page layout for inline images. |
+| wk visible footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
+| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False |
+| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False |
+| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". |
A tabela a seguir indica a *option* disponível por *format* de exportação:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md
index 76cc6d196ac60f..e1394446138fd5 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md
@@ -20,7 +20,7 @@ displayed_sidebar: docs
## Descrição
-The **WP Get attributes** command returns the value of any attribute in a 4D Write Pro range, header, body, footer, table, or document. This command gives you access to any kind of 4D Write Pro internal attributes: character, paragraph, document, table, or image.
+O comando **WP Get attributes** retorna o valor de qualquer atributo em um intervalo 4D de escrita Pro, cabeçalho, corpo, rodapé, tabela ou documento. Este comando lhe dá acesso a qualquer tipo de atributo interno da 4D Write Pro: caractere, parágrafo, tabela ou imagem.
Em *targetObj*, você pode passar:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md
index ae118bb3c8a11f..8279b68a3320eb 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md
@@ -4,7 +4,7 @@ title: WP Insert break
displayed_sidebar: docs
---
-**WP Insert break** ( *targetObj* ; *breakType* ; *mode* {; *rangeUpdate*} ) : Object
+**WP Insert break** ( *targetObj* ; *breakType* ; *mode* {; *rangeUpdate*} ): Object
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md
index 9457bea1279a66..0ad5602bcedabb 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md
@@ -10,7 +10,7 @@ displayed_sidebar: docs
| Parâmetro | Tipo | | Descrição |
| ----------- | ------ | --------------------------- | ------------------------------------------------------------------ |
-| targetObj | Object | → | Intervalo ou elemento ou documento 4D Write Pro |
+| targetObj | Object | → | Range or element or 4D Write Pro document |
| formula | Object | → | Objeto de fórmula OU Objeto com propriedades de fórmula e nome |
| mode | Number | → | Modo de inserção |
| rangeUpdate | Number | → | Inclui ou exclui o conteúdo inserido dentro do intervalo |
@@ -42,18 +42,18 @@ Quando você usa um objeto com uma fórmula *name*, esse nome é exibido no docu
No parâmetro *mode*, passe uma das seguintes constantes para indicar o modo de inserção a ser usado:
-| Parâmetros | Tipo | Valor | Comentário |
-| ---------- | ------- | ----- | ---------------------------------- |
-| wk append | Integer | 2 | Inserir conteúdo no final do alvo |
-| wk prepend | Integer | 1 | Inserir conteúdo no início do alvo |
-| wk replace | Integer | 0 | Substituir o conteúdo de destino |
+| Parâmetros | Tipo | Valor | Comentário |
+| ---------- | ------- | ----- | -------------------------------------- |
+| wk append | Integer | 2 | Insert contents at end of target |
+| wk prepend | Integer | 1 | Insert contents at beginning of target |
+| wk replace | Integer | 0 | Replace target contents |
- Se *targetObj* for um intervalo, você poderá usar o parâmetro opcional *rangeUpdate* para passar uma das seguintes constantes e especificar se a *fórmula* inserida está ou não incluída no intervalo resultante:
-| Parâmetros | Tipo | Valor | Comentário |
-| --------------------- | ------- | ----- | ------------------------------------------------------------------------------ |
-| wk exclude from range | Integer | 1 | Conteúdos inseridos não incluídos no intervalo atualizado |
-| wk include in range | Integer | 0 | Conteúdo inserido incluído no intervalo atualizado (padrão) |
+| Parâmetros | Tipo | Valor | Comentário |
+| --------------------- | ------- | ----- | ------------------------------------------------------------------------ |
+| wk exclude from range | Integer | 1 | Inserted contents not included in updated range |
+| wk include in range | Integer | 0 | Inserted contents included in updated range (default) |
Se você não passar um parâmetro *rangeUpdate*, por padrão a *fórmula* inserida será incluída no intervalo resultante.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md
index 45485c2be0396f..bfd49a82779419 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md
@@ -10,20 +10,20 @@ displayed_sidebar: docs
| Parâmetro | Tipo | | Descrição |
| -------------- | ------------------------ | --------------------------- | ------------------------------------------------------------------------- |
-| targetObj | Object | → | Intervalo ou elemento ou documento 4D Write Pro |
+| targetObj | Object | → | Range or element or 4D Write Pro document |
| picture | Imagem | → | Campo de imagem ou variável, ou caminho para o arquivo de imagem no disco |
| pictureFileObj | 4D. File | → | Um objeto de arquivo representando um arquivo de imagem. |
| mode | Integer | → | Modo de inserção |
| rangeUpdate | Integer | → | Modo de atualização de intervalo |
-| Resultado | Object | ← | Objeto referenciando a imagem |
+| Resultado | Object | ← | Object referencing the picture |
## Descrição
-O comando **WP Insert picture** insere uma *imagem* ou um *pictureFileObj* no *targetObj* especificado de acordo com os parâmetros *modo* de inserção passada e *rangeUpdate*, e retorna uma referência ao elemento imagem. A imagem será inserida como um caractere no *targetObj*.
+O comando **WP Insert picture** insere uma *picture* ou um *pictureFileObj* no *targetObj* de acordo com os parâmetros *mode* e *rangeUpdate* , e retorna uma referência ao elemento imagem. A imagem será inserida como um caractere no *targetObj*.
-Em *targetObj*, pode-se passar:
+Em *targetObj*, você pode passar:
- Um intervalo
- Um elemento (tabela / linha / parágrafo / corpo / cabeçalho / rodapé / imagem em linha / seção / subseção)
@@ -34,18 +34,18 @@ Para o segundo parâmetro, você também pode passar:
- Em *picture*:
- Um campo de imagem ou variável
- Uma string que contém um caminho para um arquivo de imagem armazenado no disco, na sintaxe do sistema.
- Se você usar uma string, você poderá passar um nome completo ou um nome de caminho relativo ao arquivo de estrutura do banco de dados. Você também pode passar um nome de arquivo, neste caso o arquivo deve estar localizado ao lado do arquivo de estrutura de banco de dados. Se você passar um nome de arquivo, você deve indicar a extensão do arquivo.
+ Se você usar uma string, você poderá passar um nome completo ou um nome de caminho relativo ao arquivo de estrutura do banco de dados. You can also pass a file name, in which case the file must be located next to the database structure file. Se você passar um nome de arquivo, você deve indicar a extensão do arquivo.
- Em *pictureFileObj*: um objeto `File` que representa um arquivo imagem.
-Qualquer formato imagem [suportado por 4D](../../FormEditor/pictures.md#native-formats-supported) pode ser usado. Você pode obter a lista de formatos de imagens disponíveis usando o comando [PICTURE CODEC LIST](../../commands-legacy/picture-codec-list.md). Se a imagem encapsular vários formatos (codecs), 4D Write Pro apenas mantém um formato para exibição e um formato para impressão (se diferente) no documento; os "melhores" formatos são selecionados automaticamente.
+Qualquer formato imagem [suportado por 4D](../../FormEditor/pictures.md#native-formats-supported) pode ser usado. Você pode obter a lista de formatos de imagens disponíveis usando o comando [PICTURE CODEC LIST](../../commands-legacy/picture-codec-list.md). If the picture encapsulates several formats (codecs), 4D Write Pro only keeps one format for display and one format for printing (if different) in the document; the "best" formats are automatically selected.
No parâmetro *modo*, passe uma das seguintes constantes para indicar o modo de inserção a ser usado na imagem no documento:
-| Parâmetros | Tipo | Valor | Comentário |
-| ---------- | ------- | ----- | ---------------------------------- |
-| wk append | Integer | 2 | Inserir conteúdo no final do alvo |
-| wk prepend | Integer | 1 | Inserir conteúdo no início do alvo |
-| wk replace | Integer | 0 | Replace target contents |
+| Parâmetros | Tipo | Valor | Comentário |
+| ---------- | ------- | ----- | -------------------------------------- |
+| wk append | Integer | 2 | Insert contents at end of target |
+| wk prepend | Integer | 1 | Insert contents at beginning of target |
+| wk replace | Integer | 0 | Replace target contents |
Se *targetObj* for um intervalo, você poderá usar opcionalmente o parâmetro *rangeUpdate* para passar uma das seguintes constantes para especificar se a imagem inserida está ou não incluída no intervalo resultante:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md
index 708890267fbbd2..641433ba6ee148 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md
@@ -19,7 +19,7 @@ displayed_sidebar: docs
## Descrição
-The **WP RESET ATTRIBUTES** command allows you to reset the value of one or more attributes in the range, element, or document passed as parameter. This command can remove any kind of 4D Write Pro internal attribute: character, paragraph, document, table, or image. You can pass the attribute name to be reset in *attribName* or you can pass a collection of attributes in *attribColl* to reset multiple attributes at once.
+O comando **WP RESET ATTRIBUTES** permite que você reinicie o valor de um ou mais atributos no intervalo, elemento ou documento passado como parâmetro. Este comando pode remover qualquer tipo de atributo interno 4D Write Pro: caractere, parágrafo, tabela ou imagem. You can pass the attribute name to be reset in *attribName* or you can pass a collection of attributes in *attribColl* to reset multiple attributes at once.
> In the case of a section or a subsection, the *sectionOrSubsection* object can be passed alone and all the attributes are reset at once.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md
index e354ed2b8d60a8..ce3fb659cefd55 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md
@@ -19,7 +19,7 @@ displayed_sidebar: docs
## Descrição
-The **WP SET ATTRIBUTES** command allows you to set the value of any attribute in a range, element, document. This command gives you access to any kind of 4D Write Pro internal attribute: character, paragraph, document, table, or image.
+O comando **WP SET ATTRIBUTES** permite que você reinicie o valor de um ou mais atributos no intervalo, elemento ou documento passado como parâmetro. Este comando lhe dá acesso a qualquer tipo de atributo interno da 4D Write Pro: caractere, parágrafo, tabela ou imagem.
Em *targetObj*, você pode passar:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md
index 47523aef3f7472..1fb5a0245d7f2e 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md
@@ -54,22 +54,22 @@ You want to replace the selection in a 4D Write Pro area with the contents of a
Você pode inserir expressões especiais relacionadas aos atributos de documento em qualquer área de documento (corpo, cabeçalho, rodapé) usando o comando [WP Insert formula](commands/wp-insert-formula.md). Within a formula, a formula context object is automatically exposed. Você pode usar as propriedades desse objeto por meio de [**This**](../commands/this.md):
-| Propriedades | Tipo | Descrição |
-| ------------------------------------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [This](../commands/this.md).title | Text | Título definido no atributo wk title |
-| [This](../commands/this.md).author | Text | Autor definido no atributo wk author |
-| [This](../commands/this.md).subject | Text | Assunto definido no atributo wk subject |
-| [This](../commands/this.md).company | Text | Empresa definida no atributo wk company |
-| [This](../commands/this.md).notes | Text | Notas definidas no atributo wk notes |
-| [This](../commands/this.md).dateCreation | Date | Data de criação definida no atributo wk date creation |
-| [This](../commands/this.md).dateModified | Date | Data de modificação definida no atributo wk date modified |
-| [This](../commands/this.md).pageNumber (\*) | Number | Page number as it is defined:- From the document start (default) or - From the section page start if it is defined by section page start. This formula is always dynamic; it is not affected by the [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) command. |
-| [This](../commands/this.md).pageCount (\*) | Number | Page count: total count of pages.
This formula is always dynamic; it is not affected by the [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) command. |
-| [This](../commands/this.md).document | Object | Documento 4D Write Pro |
-| [This](../commands/this.md).data | Object | Contexto dos dados do documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
-| [This](../commands/this.md).sectionIndex | Number | The Index of the section in the 4D Write Pro document starting from 1 |
-| [This](../commands/this.md).pageIndex | Number | The actual page number in the 4D Write Pro document starting from 1 (regardless of the section page numbers) |
-| [This](../commands/this.md).sectionName | String | The name that the user gives to the section |
+| Propriedades | Tipo | Descrição |
+| ------------------------------------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [This](../commands/this.md).title | Text | Título definido no atributo wk title |
+| [This](../commands/this.md).author | Text | Autor definido no atributo wk author |
+| [This](../commands/this.md).subject | Text | Assunto definido no atributo wk subject |
+| [This](../commands/this.md).company | Text | Empresa definida no atributo wk company |
+| [This](../commands/this.md).notes | Text | Notas definidas no atributo wk notes |
+| [This](../commands/this.md).dateCreation | Date | Data de criação definida no atributo wk date creation |
+| [This](../commands/this.md).dateModified | Date | Data de modificação definida no atributo wk date modified |
+| [This](../commands/this.md).pageNumber (\*) | Number | Número de página conforme definido:- A partir do início do documento (padrão) ou - A partir do início da página da seção, se for definido pelo início da página da seção. Esta fórmula é sempre dinâmica; não é afetada pelo comando [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). |
+| [This](../commands/this.md).pageCount (\*) | Number | Contagem de páginas: contagem total de páginas.
Esta fórmula é sempre dinâmica; não é afetada pelo comando [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). |
+| [This](../commands/this.md).document | Object | Documento 4D Write Pro |
+| [This](../commands/this.md).data | Object | Contexto dos dados do documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
+| [This](../commands/this.md).sectionIndex | Number | The Index of the section in the 4D Write Pro document starting from 1 |
+| [This](../commands/this.md).pageIndex | Number | The actual page number in the 4D Write Pro document starting from 1 (regardless of the section page numbers) |
+| [This](../commands/this.md).sectionName | String | The name that the user gives to the section |
:::note
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md
index 479fd15eac6a81..55feedcff520fe 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md
@@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources.
## Configuration Properties
-| Nome da propriedade | Tipo | Descrição | Opcional |
-| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------- |
-| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Não para OpenAI |
-| `baseURL` | Text | Base URL for OpenAI API requests. | Sim |
-| `organization` | Text | Your OpenAI Organization ID. | Sim |
-| `project` | Text | Your OpenAI Project ID. | Sim |
+| Nome da propriedade | Tipo | Descrição | Opcional |
+| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- |
+| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider |
+| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider) |
+| `organization` | Text | Your OpenAI Organization ID. | Sim |
+| `project` | Text | Your OpenAI Project ID. | Sim |
### Propriedades HTTP adicionais
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md
index 28426d8b6f12b8..7cb74f769f2d19 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md
@@ -7,7 +7,7 @@ title: Providers
Many AI providers propose an OpenAI-like API, so you can use this project to connect to them.
-To do so you just have to change the original `baseURL` by the provider one and use their api key if needed.
+To do so you just have to set the `baseURL` to the provider one and use their api key if needed.
```4d
$client.baseURL:="https://api.mistral.ai/v1"
@@ -17,7 +17,7 @@ Some of them
## Remoto
-| Provider | URL base |
+| Provider | baseURL |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| https://mistral.ai/ | https://api.mistral.ai/v1 |
| https://www.deepseek.com/ | https://api.deepseek.com |
@@ -31,7 +31,7 @@ Some of them
## Local
-| Provider | URL base padrão | Doc |
+| Provider | Default baseURL | Doc |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility |
| https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md
index bac8cd22b06ec4..aed3c9f5dd59b6 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md
@@ -21,7 +21,7 @@ First of all, initialize the OpenAI client using your API key
var $client:=cs.AIKit.OpenAI.new("your api key")
```
-For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter.
+For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter.
```4d
var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"})
@@ -43,7 +43,7 @@ var $result:=$client..()
O `$result` contém o `HTTPRequest`, um status de `sucess`, uma coleção de `erros` e outros. Ver [OpenAIResult](Classes/OpenAIResult.md)
-Veja alguns exemplos abaixo.
+See some examples below.
#### Chat
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png
new file mode 100644
index 00000000000000..fe35b22f4c5438
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png
new file mode 100644
index 00000000000000..f8ece4b7fb5fbb
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md
index 82ea07e83c1145..0efa560a6e6ade 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md
@@ -120,7 +120,11 @@ O seguinte exemplo evita uma nova conexão entre as 2 e 4 A.M.
// Método base On Server Open Connection
#DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer
- If((?02:00:00?<=Current time)&(Current time
+ If((?02:00:00?<=Current time)&(Current time04:00:00?))
+ $result:=22000
+ Else
+ $result:=0
+ End if
```
diff --git a/sidebars.js b/sidebars.js
index 7dc6e69e1a5534..9663597dc8da9b 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -38,7 +38,8 @@ module.exports =
type: "category",
label: "Dababase structure",
items: [
- "Develop/field-properties"
+ "Develop/field-properties",
+ "Develop-legacy/triggers"
]
},
{
@@ -1376,6 +1377,11 @@ module.exports =
label: "4D Mobile App Server",
href: "https://github.com/4d/4D-Mobile-App-Server/blob/main/README.md"
},
+ {
+ type: "link",
+ label: "4D Mobile App Server",
+ href: "https://github.com/4d/4D-Mobile-App-Server/blob/main/README.md"
+ },
{
type: "link",
label: "Build4D",
diff --git a/versioned_docs/version-18/FormObjects/properties_Entry.md b/versioned_docs/version-18/FormObjects/properties_Entry.md
index 015d27836eda39..282ab76d3a1fb3 100644
--- a/versioned_docs/version-18/FormObjects/properties_Entry.md
+++ b/versioned_docs/version-18/FormObjects/properties_Entry.md
@@ -28,7 +28,7 @@ Allows the user access to a standard context menu in the object when the form is
For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display#picture-format) using this menu is temporary; it is not saved with the record.
-For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands:
+For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands:
- **Fonts...**: displays the font system dialog box
- **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands.
diff --git a/versioned_docs/version-19/FormEditor/formEditor.md b/versioned_docs/version-19/FormEditor/formEditor.md
index d51d56323e33a0..f66b76c6a61f30 100644
--- a/versioned_docs/version-19/FormEditor/formEditor.md
+++ b/versioned_docs/version-19/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ The toolbar contains the following elements:
|Icon |Name|Description |
|---|---|---|
|| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.|
-|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.
|
+|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.|
|| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. |
|| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.|
|| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.|
@@ -146,11 +146,11 @@ Before you can perform any operation on an object (such as changing a line width
To select an object using the toolbar:
-1. Click the Arrow tool in the toolbar.
+1. Click the Arrow tool in the toolbar.

-When you move the pointer into the form area, it becomes a standard arrow-shaped pointer
.
+
When you move the pointer into the form area, it becomes a standard arrow-shaped pointer.
-2. Click the object you want to select. Resizing handles identify the selected object.
+2. Click the object you want to select. Resizing handles identify the selected object.

To select an object using the Property List:
@@ -241,13 +241,13 @@ To group objects:
1. Select the objects that you want to group.
2. Choose **Group** from the Object menu. OR
-Click the Group button in the toolbar of the Form editor:
+Click the Group button in the toolbar of the Form editor:

4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group.
To ungroup an object:
1. Select the grouped object that you want to ungroup.
-2. Choose **Ungroup** from the **Object** menu.OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.
4D marks the boundaries of the individual objects with handles.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles.
### Aligning objects
@@ -275,9 +275,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr
To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
-- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.The example area displays the results of your selection.
+- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
The example area displays the results of your selection.
+
+- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
-- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment.
@@ -314,7 +315,8 @@ To distribute objects with equal spacing:
1. Select three or more objects and click the desired Distribute tool.
-2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
ORSelect a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
+4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
To distribute objects using the Align and Distribute dialog box:
@@ -322,9 +324,9 @@ To distribute objects using the Align and Distribute dialog box:
2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:
-3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon:  (Standard horizontal distribution icon)
The example area displays the results of your selection.
+3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: 
(Standard horizontal distribution icon)
The example area displays the results of your selection.
-4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
- Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects.
- Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects.
@@ -347,7 +349,13 @@ To move an object to another level, select it and choose:

->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+
+:::note
+
+In binary databases, use **Ctrl+Click / Command+Click** to perform the same action.
+
+:::
When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form.
@@ -379,11 +387,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr
To view or change the entry order:
-1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
+1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette.
-2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
4D will adjust the entry order accordingly.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repeat step 2 as many times as necessary to set the data entry order you want.
diff --git a/versioned_docs/version-19/FormObjects/listbox_overview.md b/versioned_docs/version-19/FormObjects/listbox_overview.md
index 27d2ddde527e7d..3cd6a93bd14a0e 100644
--- a/versioned_docs/version-19/FormObjects/listbox_overview.md
+++ b/versioned_docs/version-19/FormObjects/listbox_overview.md
@@ -260,7 +260,7 @@ You can set standard properties (text, background color, etc.) for each column o
### Column Specific Properties {#column-specific-properties}
-[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
+[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
### Supported Form Events
diff --git a/versioned_docs/version-19/FormObjects/properties_Entry.md b/versioned_docs/version-19/FormObjects/properties_Entry.md
index d36fa52c3cde4c..a29f6837fbde5c 100644
--- a/versioned_docs/version-19/FormObjects/properties_Entry.md
+++ b/versioned_docs/version-19/FormObjects/properties_Entry.md
@@ -28,7 +28,7 @@ Allows the user access to a standard context menu in the object when the form is
For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display#picture-format) using this menu is temporary; it is not saved with the record.
-For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands:
+For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands:
- **Fonts...**: displays the font system dialog box
- **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands.
diff --git a/versioned_docs/version-20-R10/Concepts/components.md b/versioned_docs/version-20-R10/Concepts/components.md
index 224dd859b31fbb..8bb757e34edb7a 100644
--- a/versioned_docs/version-20-R10/Concepts/components.md
+++ b/versioned_docs/version-20-R10/Concepts/components.md
@@ -7,7 +7,7 @@ A 4D component is a set of 4D code and forms representing one or more functional
## Installing components
-Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Additionnally, you can [develop your own 4D components](Extensions/develop-components.md).
+Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Additionnally, you can [develop your own 4D components](Extensions/develop-components.md).
Installation and loading of components in your 4D projects are handled through the [4D dependency manager](../Project/components.md).
diff --git a/versioned_docs/version-20-R10/Develop-legacy/transactions.md b/versioned_docs/version-20-R10/Develop-legacy/transactions.md
index ec3fc9d7f4065d..39380e9e23e4a7 100644
--- a/versioned_docs/version-20-R10/Develop-legacy/transactions.md
+++ b/versioned_docs/version-20-R10/Develop-legacy/transactions.md
@@ -1,6 +1,8 @@
---
id: transactions
title: Transactions
+slug: /Develop/transactions
+displayed_sidebar: docs
---
## Description
diff --git a/versioned_docs/version-20-R10/Develop/field-properties.md b/versioned_docs/version-20-R10/Develop/field-properties.md
index 5815691e0f4bc4..09d937dfc69136 100644
--- a/versioned_docs/version-20-R10/Develop/field-properties.md
+++ b/versioned_docs/version-20-R10/Develop/field-properties.md
@@ -3,7 +3,7 @@ id: field-properties
title: Field properties
---
-For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008).
+For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html).
## Class
diff --git a/versioned_docs/version-20-R10/FormEditor/formEditor.md b/versioned_docs/version-20-R10/FormEditor/formEditor.md
index faa838ac35febc..1ddd5c165b7b8c 100644
--- a/versioned_docs/version-20-R10/FormEditor/formEditor.md
+++ b/versioned_docs/version-20-R10/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ The toolbar contains the following elements:
|Icon |Name|Description |
|---|---|---|
|| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.|
-|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.
|
+|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.|
|| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. |
|| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.|
|| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.|
@@ -148,11 +148,11 @@ Before you can perform any operation on an object (such as changing a line width
To select an object using the toolbar:
-1. Click the Arrow tool in the toolbar.
+1. Click the Arrow tool in the toolbar.

-When you move the pointer into the form area, it becomes a standard arrow-shaped pointer
.
+
When you move the pointer into the form area, it becomes a standard arrow-shaped pointer.
-2. Click the object you want to select. Resizing handles identify the selected object.
+2. Click the object you want to select. Resizing handles identify the selected object.

To select an object using the Property List:
@@ -243,13 +243,13 @@ To group objects:
1. Select the objects that you want to group.
2. Choose **Group** from the Object menu. OR
-Click the Group button in the toolbar of the Form editor:
+Click the Group button in the toolbar of the Form editor:

4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group.
To ungroup an object:
1. Select the grouped object that you want to ungroup.
-2. Choose **Ungroup** from the **Object** menu.OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.
4D marks the boundaries of the individual objects with handles.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles.
### Aligning objects
@@ -277,9 +277,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr
To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
-- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.The example area displays the results of your selection.
+- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
The example area displays the results of your selection.
+
+- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
-- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment.
@@ -316,7 +317,8 @@ To distribute objects with equal spacing:
1. Select three or more objects and click the desired Distribute tool.
-2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
ORSelect a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
+4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
To distribute objects using the Align and Distribute dialog box:
@@ -324,9 +326,9 @@ To distribute objects using the Align and Distribute dialog box:
2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:
-3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon:  (Standard horizontal distribution icon)
The example area displays the results of your selection.
+3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: 
(Standard horizontal distribution icon)
The example area displays the results of your selection.
-4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
- Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects.
- Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects.
@@ -349,7 +351,13 @@ To move an object to another level, select it and choose:

->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+
+:::note
+
+In binary databases, use **Ctrl+Click / Command+Click** to perform the same action.
+
+:::
When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form.
@@ -381,11 +389,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr
To view or change the entry order:
-1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
+1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette.
-2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
4D will adjust the entry order accordingly.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repeat step 2 as many times as necessary to set the data entry order you want.
diff --git a/versioned_docs/version-20-R10/FormObjects/listbox_overview.md b/versioned_docs/version-20-R10/FormObjects/listbox_overview.md
index 3c1b6e116e8d3b..9657a607cb73bb 100644
--- a/versioned_docs/version-20-R10/FormObjects/listbox_overview.md
+++ b/versioned_docs/version-20-R10/FormObjects/listbox_overview.md
@@ -291,7 +291,7 @@ You can set standard properties (text, background color, etc.) for each column o
### Column Specific Properties {#column-specific-properties}
-[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
+[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
### Supported Form Events {#supported-form-events-1}
diff --git a/versioned_docs/version-20-R10/FormObjects/properties_Action.md b/versioned_docs/version-20-R10/FormObjects/properties_Action.md
index 3b80539ec0b30d..10339f95319519 100644
--- a/versioned_docs/version-20-R10/FormObjects/properties_Action.md
+++ b/versioned_docs/version-20-R10/FormObjects/properties_Action.md
@@ -205,7 +205,7 @@ In other cases (list boxes based on named selections, columns associated with ex
---
## Standard action
-Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*.
+Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions).
You can assign both a standard action and a project method to an object. In this case, the standard action is usually executed after the method and 4D uses this action to enable/disable the object according to the current context. When an object is deactivated, the associated project method cannot be executed.
@@ -214,7 +214,7 @@ You can assign both a standard action and a project method to an object. In this
|Name|Data Type|Possible Values|
|---|---|---|
-|action|string |The name of a [valid standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html).|
+|action|string |The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). |
#### Objects Supported
diff --git a/versioned_docs/version-20-R10/FormObjects/properties_Entry.md b/versioned_docs/version-20-R10/FormObjects/properties_Entry.md
index 79ec619b26b288..9c9bb60c12b0f7 100644
--- a/versioned_docs/version-20-R10/FormObjects/properties_Entry.md
+++ b/versioned_docs/version-20-R10/FormObjects/properties_Entry.md
@@ -27,7 +27,7 @@ Allows the user access to a standard context menu in the object when the form is
For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record.
-For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands:
+For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands:
- **Fonts...**: displays the font system dialog box
- **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands.
diff --git a/versioned_docs/version-20-R10/ORDA/entities.md b/versioned_docs/version-20-R10/ORDA/entities.md
index a1c8f8cca61cba..164a77b603b698 100644
--- a/versioned_docs/version-20-R10/ORDA/entities.md
+++ b/versioned_docs/version-20-R10/ORDA/entities.md
@@ -477,7 +477,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection
This function is called whenever an entity selection or an entity of the dataclass is requested. The filter is run once, when the entity selection is created.
-The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`], etc.
+The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc.
:::note
diff --git a/versioned_docs/version-20-R10/ORDA/orda-events.md b/versioned_docs/version-20-R10/ORDA/orda-events.md
index 6a52fdd62757c2..42f09ec34ffe8a 100644
--- a/versioned_docs/version-20-R10/ORDA/orda-events.md
+++ b/versioned_docs/version-20-R10/ORDA/orda-events.md
@@ -1,6 +1,6 @@
---
id: orda-events
-title: ORDA Events
+title: Entity Events
---
History
@@ -11,7 +11,7 @@ title: ORDA Events
-ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
+Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes.
@@ -21,7 +21,7 @@ You cannot directly trigger event function execution. Events are called automati
:::info Compatibility note
-ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
+ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
:::
@@ -30,7 +30,7 @@ ORDA events in the datastore are equivalent to triggers in the 4D database. Howe
### Event level
-A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class).
+A entity event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class).
It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute.
@@ -57,7 +57,7 @@ With other remote configurations (i.e. Qodly applications, [REST API requests](.
### Summary table
-The following table lists ORDA events along with their rules.
+The following table lists ORDA entity events along with their rules.
| Event | Level | Function name | (C/S) Executed on |
| :--------------- |:--------------- | :----- | :-----: |
diff --git a/versioned_docs/version-20-R10/Project/components.md b/versioned_docs/version-20-R10/Project/components.md
index b149e7e1faf406..da352948708c93 100644
--- a/versioned_docs/version-20-R10/Project/components.md
+++ b/versioned_docs/version-20-R10/Project/components.md
@@ -5,7 +5,7 @@ title: Dependencies
A 4D component is a set of 4D code and/or 4D forms representing one or more functionalities that you can add and use in your projects. For example, the [4D SVG](https://github.com/4d/4D-SVG) component adds advanced commands and an integrated rendering engine that can be used to display SVG files.
-You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories).
+You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/topics/4d-component).
When developing in 4D, the component files can be transparently stored in your computer or on a Github repository.
@@ -363,7 +363,7 @@ When you add or update a component (whether [local](#local-components) or [from
The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one.
-- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
+- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
:::note
diff --git a/versioned_docs/version-20-R10/WebServer/sessions.md b/versioned_docs/version-20-R10/WebServer/sessions.md
index 8104420d4d49c1..1bc9097f9490c2 100644
--- a/versioned_docs/version-20-R10/WebServer/sessions.md
+++ b/versioned_docs/version-20-R10/WebServer/sessions.md
@@ -209,9 +209,9 @@ Else
End if
```
-:::note
+:::tips Related blog posts
-For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post.
+[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/)
:::
diff --git a/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md b/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md
index 3d1dcd75409a18..9fded0091c08d7 100644
--- a/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md
+++ b/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md
@@ -11,8 +11,8 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources.
| Property Name | Type | Description | Optional |
|-------------------|-------|-----------------------------------|----------|
-| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | No for OpenAI |
-| `baseURL` | Text | Base URL for OpenAI API requests. | Yes |
+| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider |
+| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider)|
| `organization` | Text | Your OpenAI Organization ID. | Yes |
| `project` | Text | Your OpenAI Project ID. | Yes |
diff --git a/versioned_docs/version-20-R10/aikit/compatible-openai.md b/versioned_docs/version-20-R10/aikit/compatible-openai.md
index 48db88a10f7216..847aec12b412c1 100644
--- a/versioned_docs/version-20-R10/aikit/compatible-openai.md
+++ b/versioned_docs/version-20-R10/aikit/compatible-openai.md
@@ -7,7 +7,7 @@ title: Providers
Many AI providers propose an OpenAI-like API, so you can use this project to connect to them.
-To do so you just have to change the original `baseURL` by the provider one and use their api key if needed.
+To do so you just have to set the `baseURL` to the provider one and use their api key if needed.
```4d
$client.baseURL:="https://api.mistral.ai/v1"
@@ -17,7 +17,7 @@ Some of them
## Remote
-|Provider|Base url|
+|Provider|baseURL|
|-|-|
|https://mistral.ai/|https://api.mistral.ai/v1|
|https://www.deepseek.com/|https://api.deepseek.com|
@@ -31,7 +31,7 @@ Some of them
## Local
-| Provider | Default base url | Doc |
+| Provider | Default baseURL | Doc |
|------------------ |---------------------------|-----------------------------------------------|
|https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility |
|https://lmstudio.ai/| http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai |
diff --git a/versioned_docs/version-20-R10/aikit/overview.md b/versioned_docs/version-20-R10/aikit/overview.md
index eb664c46d783e6..e9772f39bc5ba5 100644
--- a/versioned_docs/version-20-R10/aikit/overview.md
+++ b/versioned_docs/version-20-R10/aikit/overview.md
@@ -22,7 +22,7 @@ First of all, initialize the OpenAI client using your API key
var $client:=cs.AIKit.OpenAI.new("your api key")
```
-For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter.
+For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter.
```4d
var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"})
@@ -44,7 +44,7 @@ var $result:=$client..()
The `$result` contains the `HTTPRequest`, a `success` status, a collection of `errors` and more. See [OpenAIResult](Classes/OpenAIResult.md)
-See some examples bellow.
+See some examples below.
#### Chat
diff --git a/versioned_docs/version-20-R10/commands-legacy/array-to-list.md b/versioned_docs/version-20-R10/commands-legacy/array-to-list.md
index d3247a29055ca8..0464e9802e30fd 100644
--- a/versioned_docs/version-20-R10/commands-legacy/array-to-list.md
+++ b/versioned_docs/version-20-R10/commands-legacy/array-to-list.md
@@ -27,7 +27,7 @@ The optional *itemRefs* parameter, if specified, must be a numeric array synchro
* This command only lets you set first-level items of the list.
* When you use this command with a choice list, it modifies the structure of the application (lists are saved in the structure file), so any modifications made locally are lost when the structure file is updated in production.
-* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project or a component.
+* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component.
You can use ARRAY TO LIST to build a list based on the elements of an array. However, to free yourself from these restrictions and make full use of the lists of values, we recommend using the commands of the *Hierarchical Lists* theme.
diff --git a/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md
index 5a16cc653a0813..2a254f1ab88314 100644
--- a/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md
+++ b/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md
@@ -125,7 +125,11 @@ The following example prevents any new connection from 2 to 4 A.M.
// On Server Open Connection Database Method
#DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer
- If((?02:00:00?<=Current time)&(Current time
+ If((?02:00:00?<=Current time)&(Current time04:00:00?))
+ $result:=22000
+ Else
+ $result:=0
+ End if
```
diff --git a/versioned_docs/version-20-R10/commands-legacy/save-list.md b/versioned_docs/version-20-R10/commands-legacy/save-list.md
index cec6bb9868ce34..17121d79461fdf 100644
--- a/versioned_docs/version-20-R10/commands-legacy/save-list.md
+++ b/versioned_docs/version-20-R10/commands-legacy/save-list.md
@@ -20,7 +20,7 @@ displayed_sidebar: docs
If there is already a list with this name, its contents are replaced.
-**Note:** This command cannot be used in a structure loaded in **read only**, such as a .4dz project or a component.
+**Note:** This command cannot be used in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component.
## See also
diff --git a/versioned_docs/version-20-R10/commands-legacy/value-type.md b/versioned_docs/version-20-R10/commands-legacy/value-type.md
index 69bf5f18487a00..3fdd90420a4b6c 100644
--- a/versioned_docs/version-20-R10/commands-legacy/value-type.md
+++ b/versioned_docs/version-20-R10/commands-legacy/value-type.md
@@ -37,7 +37,6 @@ The command returns a numeric value that can be compared with one of the followi
| Is time | Integer | 11 |
| Is undefined | Integer | 5 |
| Is variant | Integer | 12 |
-| Object array | Integer | 39 |
This command is designed to return the type of a scalar expression, *i.e.* the value stored in or returned by the *expression* parameter. In particular, it can be applied to the following 4D expressions:
diff --git a/versioned_docs/version-20/Concepts/components.md b/versioned_docs/version-20/Concepts/components.md
index 2c28b167511513..2aced2e9ea1dd6 100644
--- a/versioned_docs/version-20/Concepts/components.md
+++ b/versioned_docs/version-20/Concepts/components.md
@@ -7,7 +7,7 @@ A 4D component is a set of 4D code and forms representing one or more functional
## Where to find components?
-Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Additionnally, you can [develop your own 4D components](Extensions/develop-components.md).
+Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Additionnally, you can [develop your own 4D components](Extensions/develop-components.md).
## Installing components
diff --git a/versioned_docs/version-20/FormEditor/formEditor.md b/versioned_docs/version-20/FormEditor/formEditor.md
index d51d56323e33a0..f66b76c6a61f30 100644
--- a/versioned_docs/version-20/FormEditor/formEditor.md
+++ b/versioned_docs/version-20/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ The toolbar contains the following elements:
|Icon |Name|Description |
|---|---|---|
|| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.|
-|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.
|
+|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.|
|| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. |
|| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.|
|| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.|
@@ -146,11 +146,11 @@ Before you can perform any operation on an object (such as changing a line width
To select an object using the toolbar:
-1. Click the Arrow tool in the toolbar.
+1. Click the Arrow tool in the toolbar.

-When you move the pointer into the form area, it becomes a standard arrow-shaped pointer
.
+
When you move the pointer into the form area, it becomes a standard arrow-shaped pointer.
-2. Click the object you want to select. Resizing handles identify the selected object.
+2. Click the object you want to select. Resizing handles identify the selected object.

To select an object using the Property List:
@@ -241,13 +241,13 @@ To group objects:
1. Select the objects that you want to group.
2. Choose **Group** from the Object menu. OR
-Click the Group button in the toolbar of the Form editor:
+Click the Group button in the toolbar of the Form editor:

4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group.
To ungroup an object:
1. Select the grouped object that you want to ungroup.
-2. Choose **Ungroup** from the **Object** menu.OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.
4D marks the boundaries of the individual objects with handles.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles.
### Aligning objects
@@ -275,9 +275,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr
To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
-- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.The example area displays the results of your selection.
+- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
The example area displays the results of your selection.
+
+- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
-- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment.
@@ -314,7 +315,8 @@ To distribute objects with equal spacing:
1. Select three or more objects and click the desired Distribute tool.
-2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
ORSelect a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
+4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
To distribute objects using the Align and Distribute dialog box:
@@ -322,9 +324,9 @@ To distribute objects using the Align and Distribute dialog box:
2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:
-3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon:  (Standard horizontal distribution icon)
The example area displays the results of your selection.
+3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: 
(Standard horizontal distribution icon)
The example area displays the results of your selection.
-4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
- Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects.
- Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects.
@@ -347,7 +349,13 @@ To move an object to another level, select it and choose:

->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+
+:::note
+
+In binary databases, use **Ctrl+Click / Command+Click** to perform the same action.
+
+:::
When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form.
@@ -379,11 +387,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr
To view or change the entry order:
-1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
+1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette.
-2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
4D will adjust the entry order accordingly.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repeat step 2 as many times as necessary to set the data entry order you want.
diff --git a/versioned_docs/version-20/FormObjects/listbox_overview.md b/versioned_docs/version-20/FormObjects/listbox_overview.md
index fea3103a27cdd0..ec77a42d634eed 100644
--- a/versioned_docs/version-20/FormObjects/listbox_overview.md
+++ b/versioned_docs/version-20/FormObjects/listbox_overview.md
@@ -285,7 +285,7 @@ You can set standard properties (text, background color, etc.) for each column o
### Column Specific Properties {#column-specific-properties}
-[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
+[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
### Supported Form Events
diff --git a/versioned_docs/version-20/FormObjects/properties_Entry.md b/versioned_docs/version-20/FormObjects/properties_Entry.md
index 0ce9b14c849ef3..51fc31a34c5eb1 100644
--- a/versioned_docs/version-20/FormObjects/properties_Entry.md
+++ b/versioned_docs/version-20/FormObjects/properties_Entry.md
@@ -27,7 +27,7 @@ Allows the user access to a standard context menu in the object when the form is
For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record.
-For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands:
+For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands:
- **Fonts...**: displays the font system dialog box
- **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands.
diff --git a/versioned_docs/version-21/API/DataClassClass.md b/versioned_docs/version-21/API/DataClassClass.md
index c6d6cb00f6fbbb..edcd003a94a757 100644
--- a/versioned_docs/version-21/API/DataClassClass.md
+++ b/versioned_docs/version-21/API/DataClassClass.md
@@ -1185,7 +1185,7 @@ In this case, the *value* parameter must be a **comparison vector object** conta
|Property|Type|Description|
|---|---|---|
|vector|[4D.Vector](../API/VectorClass.md)|Mandatory. The vector to be compared|
-|metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:`mk cosine` (default if omitted): calculates the cosine distance between vectors.`mk dot`: calculates the dot similarity of vectors.`mk euclidean`: calculates the Euclidean distance between vectors.|
+|metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:`mk cosine` (default if omitted): calculates the cosine similarity between vectors.`mk dot`: calculates the dot similarity of vectors.`mk euclidean`: calculates the Euclidean distance between vectors.|
|threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.|
Only a subset of **comparator** symbols are supported. Note that they compare results to the threshold value:
diff --git a/versioned_docs/version-21/API/EntityClass.md b/versioned_docs/version-21/API/EntityClass.md
index 13cba5842aa523..2b84626000140f 100644
--- a/versioned_docs/version-21/API/EntityClass.md
+++ b/versioned_docs/version-21/API/EntityClass.md
@@ -992,7 +992,6 @@ The object returned by `.lock()` contains the following properties:
|---|---|---|
|`dk status entity does not exist anymore`| 5 |The entity no longer exists in the data. This error can occur in the following cases:the entity has been dropped (the stamp has changed and the memory space is now free)the entity has been dropped and replaced by another one with another primary key (the stamp has changed and a new entity now uses the memory space). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. When using `.lock()`, this error can be returned when `dk reload if stamp changed` option is used
**Associated statusText**: "Entity does not exist anymore"|
|`dk status locked`| 3 |The entity is locked by a pessimistic lock.**Associated statusText**: "Already locked"
-|`dk status mild validation error`|7|Can be returned by the developer only in validate events and do not require|
|`dk status serious error`| 4 |A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
**Associated statusText**: "Other error"|
|`dk status stamp has changed`|2|The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).with `.save()`: error only if the `dk auto merge` option is not usedwith `.drop()`: error only if the `dk force drop if stamp changed` option is not usedwith `.lock()`: error only if the `dk reload if stamp changed` option is not used
**Associated statusText**: "Stamp has changed"|
diff --git a/versioned_docs/version-21/API/SessionClass.md b/versioned_docs/version-21/API/SessionClass.md
index 1ad435a7823c29..b7fa2f61dde550 100644
--- a/versioned_docs/version-21/API/SessionClass.md
+++ b/versioned_docs/version-21/API/SessionClass.md
@@ -103,7 +103,7 @@ This function does not remove **promoted privileges** from the web process, whet
:::
-Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code).
+Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas).
#### Example
@@ -413,7 +413,7 @@ This function returns True for the *privilege* if called from a function that wa
:::
-Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code).
+Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas).
With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*.
diff --git a/versioned_docs/version-21/Concepts/components.md b/versioned_docs/version-21/Concepts/components.md
index 2aff64fb665de5..2295ba0c354992 100644
--- a/versioned_docs/version-21/Concepts/components.md
+++ b/versioned_docs/version-21/Concepts/components.md
@@ -9,7 +9,7 @@ A 4D component is a set of 4D code and forms representing one or more functional
Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md).
-Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Additionnally, you can [develop your own 4D components](../Extensions/develop-components.md).
+Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Additionnally, you can [develop your own 4D components](../Extensions/develop-components.md).
## Using components
diff --git a/versioned_docs/version-21/Develop-legacy/transactions.md b/versioned_docs/version-21/Develop-legacy/transactions.md
index ec3fc9d7f4065d..39380e9e23e4a7 100644
--- a/versioned_docs/version-21/Develop-legacy/transactions.md
+++ b/versioned_docs/version-21/Develop-legacy/transactions.md
@@ -1,6 +1,8 @@
---
id: transactions
title: Transactions
+slug: /Develop/transactions
+displayed_sidebar: docs
---
## Description
diff --git a/versioned_docs/version-21/Develop/field-properties.md b/versioned_docs/version-21/Develop/field-properties.md
index 5815691e0f4bc4..09d937dfc69136 100644
--- a/versioned_docs/version-21/Develop/field-properties.md
+++ b/versioned_docs/version-21/Develop/field-properties.md
@@ -3,7 +3,7 @@ id: field-properties
title: Field properties
---
-For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008).
+For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html).
## Class
diff --git a/versioned_docs/version-21/FormEditor/formEditor.md b/versioned_docs/version-21/FormEditor/formEditor.md
index faa838ac35febc..1ddd5c165b7b8c 100644
--- a/versioned_docs/version-21/FormEditor/formEditor.md
+++ b/versioned_docs/version-21/FormEditor/formEditor.md
@@ -56,7 +56,7 @@ The toolbar contains the following elements:
|Icon |Name|Description |
|---|---|---|
|| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.|
-|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.
|
+|| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.|
|| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. |
|| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.|
|| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.|
@@ -148,11 +148,11 @@ Before you can perform any operation on an object (such as changing a line width
To select an object using the toolbar:
-1. Click the Arrow tool in the toolbar.
+1. Click the Arrow tool in the toolbar.

-When you move the pointer into the form area, it becomes a standard arrow-shaped pointer
.
+
When you move the pointer into the form area, it becomes a standard arrow-shaped pointer.
-2. Click the object you want to select. Resizing handles identify the selected object.
+2. Click the object you want to select. Resizing handles identify the selected object.

To select an object using the Property List:
@@ -243,13 +243,13 @@ To group objects:
1. Select the objects that you want to group.
2. Choose **Group** from the Object menu. OR
-Click the Group button in the toolbar of the Form editor:
+Click the Group button in the toolbar of the Form editor:

4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group.
To ungroup an object:
1. Select the grouped object that you want to ungroup.
-2. Choose **Ungroup** from the **Object** menu.OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.
4D marks the boundaries of the individual objects with handles.
+2. Choose **Ungroup** from the **Object** menu.
OR
Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles.
### Aligning objects
@@ -277,9 +277,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr
To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
-- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.The example area displays the results of your selection.
+- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
The example area displays the results of your selection.
+
+- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
-- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.
You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment.
@@ -316,7 +317,8 @@ To distribute objects with equal spacing:
1. Select three or more objects and click the desired Distribute tool.
-2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
ORSelect a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
+2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

OR
Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.
+4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference.
To distribute objects using the Align and Distribute dialog box:
@@ -324,9 +326,9 @@ To distribute objects using the Align and Distribute dialog box:
2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:
-3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon:  (Standard horizontal distribution icon)
The example area displays the results of your selection.
+3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: 
(Standard horizontal distribution icon)
The example area displays the results of your selection.
-4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
+4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
OR:
To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
- Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects.
- Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects.
@@ -349,7 +351,13 @@ To move an object to another level, select it and choose:

->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click.
+
+:::note
+
+In binary databases, use **Ctrl+Click / Command+Click** to perform the same action.
+
+:::
When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form.
@@ -381,11 +389,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr
To view or change the entry order:
-1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
+1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette.
-2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
4D will adjust the entry order accordingly.
+2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

4D will adjust the entry order accordingly.
3. Repeat step 2 as many times as necessary to set the data entry order you want.
diff --git a/versioned_docs/version-21/FormEditor/forms.md b/versioned_docs/version-21/FormEditor/forms.md
index 53565e921469e0..1bb9f5f24bc3ac 100644
--- a/versioned_docs/version-21/FormEditor/forms.md
+++ b/versioned_docs/version-21/FormEditor/forms.md
@@ -102,6 +102,14 @@ A multi-page form has both a background page and several display pages. Objects
On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces.
+Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications.
+
+|Light theme|Dark theme|
+|---|---|
+|||
+
+
+
:::caution Developer Preview
Fluent UI support is currently in the Developer Preview phase. It should not be used in production.
@@ -114,21 +122,18 @@ This feature can only be used on Windows. On macOS, it is ignored.
:::
+:::tip Related blog post
-### Fluent UI rendering availability
+[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui)
-The Fluent UI rendering is available in the following execution environments only:
+:::
-- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms).
-- Merged [stand-alone](../Desktop/building.md#build-stand-alone-application) or [client](../Desktop/building.md#build-client-application) 4D application
-- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu.
+### Requirements
-:::note
+The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms.
If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error.
-:::
-
### Enabling the Fluent UI rendering
You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting.
@@ -152,21 +157,23 @@ Each form can define its own rendering via the **Widget appearance** property. T
The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false".
-### Features and limitations
-
-Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications.
-
+### Specific behaviors
When using 4D forms with Fluent UI rendering, you need to pay attention to the following points:
-- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned.
+- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned.
- If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting).
- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus.
-- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md).
- [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md).
- [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS).
- The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine.
+- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md).
+
+:::info Limitations
+This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui).
+
+:::
diff --git a/versioned_docs/version-21/FormObjects/listbox_overview.md b/versioned_docs/version-21/FormObjects/listbox_overview.md
index 3c1b6e116e8d3b..9657a607cb73bb 100644
--- a/versioned_docs/version-21/FormObjects/listbox_overview.md
+++ b/versioned_docs/version-21/FormObjects/listbox_overview.md
@@ -291,7 +291,7 @@ You can set standard properties (text, background color, etc.) for each column o
### Column Specific Properties {#column-specific-properties}
-[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
+[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap)
### Supported Form Events {#supported-form-events-1}
diff --git a/versioned_docs/version-21/FormObjects/properties_Action.md b/versioned_docs/version-21/FormObjects/properties_Action.md
index 3b80539ec0b30d..10339f95319519 100644
--- a/versioned_docs/version-21/FormObjects/properties_Action.md
+++ b/versioned_docs/version-21/FormObjects/properties_Action.md
@@ -205,7 +205,7 @@ In other cases (list boxes based on named selections, columns associated with ex
---
## Standard action
-Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*.
+Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions).
You can assign both a standard action and a project method to an object. In this case, the standard action is usually executed after the method and 4D uses this action to enable/disable the object according to the current context. When an object is deactivated, the associated project method cannot be executed.
@@ -214,7 +214,7 @@ You can assign both a standard action and a project method to an object. In this
|Name|Data Type|Possible Values|
|---|---|---|
-|action|string |The name of a [valid standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html).|
+|action|string |The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). |
#### Objects Supported
diff --git a/versioned_docs/version-21/FormObjects/properties_Entry.md b/versioned_docs/version-21/FormObjects/properties_Entry.md
index 92f23435d1a346..b1fa931fbd606f 100644
--- a/versioned_docs/version-21/FormObjects/properties_Entry.md
+++ b/versioned_docs/version-21/FormObjects/properties_Entry.md
@@ -32,7 +32,7 @@ Allows the user access to a standard context menu in the object when the form is
For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record.
-For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands:
+For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands:
- **Fonts...**: displays the font system dialog box
- **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands.
diff --git a/versioned_docs/version-21/Notes/updates.md b/versioned_docs/version-21/Notes/updates.md
index 98124657dd0b0f..f532793e368d5b 100644
--- a/versioned_docs/version-21/Notes/updates.md
+++ b/versioned_docs/version-21/Notes/updates.md
@@ -319,7 +319,7 @@ If your 4D applications use TLS connections, it is recommended that you upgrade
## 4D 20.x LTS
-See [**Release Notes for 4D 20.x LTS**](../../versioned_docs/version-20/Notes/updates.md).
+See [**Release Notes for 4D 20.x LTS**](../20/Notes/updates).
diff --git a/versioned_docs/version-21/ORDA/entities.md b/versioned_docs/version-21/ORDA/entities.md
index a1c8f8cca61cba..164a77b603b698 100644
--- a/versioned_docs/version-21/ORDA/entities.md
+++ b/versioned_docs/version-21/ORDA/entities.md
@@ -477,7 +477,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection
This function is called whenever an entity selection or an entity of the dataclass is requested. The filter is run once, when the entity selection is created.
-The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`], etc.
+The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc.
:::note
diff --git a/versioned_docs/version-21/ORDA/orda-events.md b/versioned_docs/version-21/ORDA/orda-events.md
index 51552b941fda8c..f661164ca4e23c 100644
--- a/versioned_docs/version-21/ORDA/orda-events.md
+++ b/versioned_docs/version-21/ORDA/orda-events.md
@@ -1,6 +1,6 @@
---
id: orda-events
-title: Events
+title: Entity Events
---
History
@@ -12,7 +12,7 @@ title: Events
-ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
+Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated.
You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes.
@@ -20,7 +20,7 @@ You cannot directly trigger event function execution. Events are called automati
:::tip Related blog post
-[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions)
+[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations)
:::
@@ -29,7 +29,7 @@ You cannot directly trigger event function execution. Events are called automati
:::info Compatibility note
-ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
+ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events.
:::
@@ -60,7 +60,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always
:::
-With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below).
+With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below).
### Summary table
@@ -122,7 +122,7 @@ When an error occurs in an event, the other events are stopped at the first rais
|errCode|Integer|Same as for [`Last errors`](../commands/last-errors.md) command|Yes|
|message|Text|Same as for [`Last errors`](../commands/last-errors.md) command|Yes|
|extraDescription|Object|Free information to set up|Yes|
-|seriousError|Boolean|Used only with validate events (see below). `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` statuscreates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status|Yes (default is false)|
+|seriousError|Boolean|Used only with validate events (see below). `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status`False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status|Yes (default is false)|
|componentSignature|Text|Always "DBEV"|No|
- [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions.
@@ -159,7 +159,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi
- the user sets a value on a 4D form,
- the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`).
- in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md).
-- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event.
+- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event.
- with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`)
@@ -379,26 +379,21 @@ It is not recommended to update the entity within this function (using `This`).
#### Example
-In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action.
+In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action.
```4d
// ProductsEntity class
+//
+// validateSave event at attribute level
Function event validateSave margin($event : Object) : Object
var $result : Object
-var $marginAverage : Real
-$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin")
-
-If (This.margin<$marginAverage)
- $result:={\
- errCode: 1; \
- message: "The margin of this product ("+String(This.margin)+") is under the average"; \
- extraDescription: {\
- info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\
- fatalError: False}
+//The user can't create a product whose margin is < 50%
+If (This.margin<50)
+ $result:={errCode: 1; message: "The validation of this product failed"; \
+ extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False}
End if
-
return $result
```
@@ -441,32 +436,35 @@ To stop the action, the code of the function must return an [error object](#erro
#### Example
-When a product is saved, some information is logged to an external system which may be unavailable.
+When a file is saved on disk, catch errors related to disk space for example.
```4d
-Function event saving($event : Object) : Object
+// ProductsEntity class
+// saving event at attribute level
+Function event saving userManualPath($event : Object) : Object
-var $result; $status : Object
-var $log : cs.Entity
-var $remote : 4D.DataStoreImplementation
-
-Try
- $remote:=Open datastore({hostname: "events@acme.com"}; "logs")
- $log:=$remote.Logs.new()
- $log.productId:=This.ID
- $log.stamp:=Timestamp
- $log.event:="Created by "+Current user()
- $status:=$log.save()
-Catch
- $result:={\
- errCode: Last errors.last().errCode;\
- message: Last errors.last().message; \
- extraDescription: {info: "The external Logs can't be reached"}}
-End try
+var $result : Object
+var $userManualFile : 4D.File
+var $fileCreated : Boolean
+
+If (This.userManualPath#"")
+ $userManualFile:=File(This.userManualPath)
+
+ // The user manual document file is created on the disk
+ // This may fail if no more space is available
+ Try
+ $fileCreated:=$userManualFile.create()
+ Catch
+ // No more room on disk for example
+ $result:={/
+ errCode: 1; message: "Error during the save action for this product"; /
+ extraDescription: {info: "There is no available space on disk to store the user manual"}/
+ }
+ End try
+End if
return $result
-
```
@@ -490,30 +488,25 @@ The function receives an [*event* object](#event-parameter) as parameter.
- Throwing an [error object](#error-object) is **not supported** by this function.
-#### Example 1
-
-If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later.
+#### Example
+If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event:
```4d
// ProductsEntity class
Function event afterSave($event : Object)
-var $failure : cs.ProductsInFailureEntity
-var $status : Object
-
- // $event.status.errors is filled if the error comes from a validateSave event
If (($event.status.success=False) && ($event.status.errors=Null))
- $failure:=ds.ProductsInFailure.new()
- $failure.name:=This.name
- $failure.category:=This.category
- $failure.costPrice:=This.costPrice
- $failure.retailPrice:=This.retailPrice
- $failure.reason:="Error during the save action"
- $failure.stamp:=Timestamp
- $status:=$failure.save()
-End if
-
+ // $event.status.errors is filled if the error comes from the validateSave event
+
+ // The userManualPath attribute has not been properly saved
+ // Its value is reset
+ If ($event.savedAttributes.indexOf("userManualPath")=-1)
+ This.userManualPath:=""
+ This.status:="KO"
+ End if
+
+End if
```
@@ -546,44 +539,24 @@ This event is triggered **before** the entity is actually dropped, allowing you
To stop the action, the code of the function must return an [error object](#error-object).
-#### Example 1
+#### Example
-Products can be deleted only if they have been flagged TO DELETE.
+In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action.
```4d
- //ProductsEntity class
-Function event validateDrop status($event : Object) : Object
-
-If (This.status != "TO DELETE")
-
- var $result:= New object()
- $result.errCode:=1
- $result.message:="The record can't be deleted"
- $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"}
- $result.fatalError:=False
- return $result
-End if
-```
+// ProductsEntity class
-#### Example 2
+Function event validateDrop status($event : Object) : Object
-The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3.
+var $result : Object
-```4d
- //ProductsEntity class
-Function event validateDrop($event : Object) : Object
-
-var $yearOffSet : Integer
-$yearOffSet:=Year of(Current date)-3
-
-If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet))
- var $result:=New object()
- $result.errCode:=1
- $result.message:="The record can't be deleted"
- $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)}
- $result.fatalError:=False
- return $result
+// Products must be marked as TO DELETE to be dropped
+If (This.status#"TO DELETE")
+ $result:={errCode: 1; message: "You can't drop this product"; \
+ extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False}
End if
+
+return $result
```
@@ -620,54 +593,31 @@ The business logic should raise errors which cannot be detected during the `vali
To stop the action, the code of the function must return an [error object](#error-object).
-#### Example 1
+#### Example
-When dropping an order with *totalPrice >= 500*, a log file is updated.
+Here is an example of `dropping` event at entity level:
```4d
- //OrderEntity class
-Function event dropping totalPrice ($event : Object)
-
-var $log : cs.LogEntity
-var $status: Object
-
-If (This.totalPrice >= 500)
-
- $log:=ds.Log.new()
- $log.orderID:=This.ID
- $log.orderPrice:=This.totalPrice
- $log.event:="Drop"
- $log.creationDate:=Current date()
- $status:=$log.save()
-
- If($status.success=False)
- throw ({errCode: 1; message: "Error while updating the log file"})
- End if
-End if
-
-```
-
-#### Example 2
-
-When a product is dropped, a log file is updated.
+// ProductsEntity class
+Function event dropping($event : Object) : Object
-```4d
- //ProductsEntity class
-Function event dropping ($event : Object)
+var $result : Object
+var $userManualFile : 4D.File
-var $log : cs.LogEntity
-var $status: Object
+$userManualFile:=File(This.userManualPath)
-$log:=ds.Log.new()
-$log.productID:=This.ID
-$log.productPrice:=This.price
-$log.event:="Drop"
-$log.creationDate:=Current date()
-$status:=$log.save()
+ // When dropping a product, its user manual is also deleted on the disk
+ // This action may fail
+Try
+ If ($userManualFile.exists)
+ $userManualFile.delete()
+ End if
+Catch
+ // Dropping the user manual failed
+ $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}}
+End try
-If($status.success=False)
- throw ({errCode: 1; message:"Error while updating the log file"})
-End if
+return $result
```
### `Function event afterDrop`
@@ -694,50 +644,21 @@ The dropped entity is referenced by `This` and still exists in memory.
:::
-#### Example 1
+#### Example
-Send a mail to the customer with the details of the dropped order.
+If the drop action failed, then the product must be checked manually:
```4d
- //OrderEntity class
-Function event afterDrop ($event : Object)
-
-var $oAuth2 : cs.NetKit.OAuth2Provider
-var $google : cs.NetKit.Google
-
- //$param contains clientId, secretId...
-$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
-$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"})
-
- //Email creation
-$email:=New object
-$email.from:="youremail@gmail.com"
-$email.to:="destinationmail@mail.com"
-$email.subject:="Your order is cancelled"
-$email.textBody:="Products numbers: " + This.products.number.join("-")
-
- //Email sending
-$status:=$google.mail.send($email)
-```
-
-#### Example 2
+Function event afterDrop($event : Object)
-Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event.
+var $status : Object
-```4d
- //ProductEntity class
-Function event afterDrop ($event : Object)
-
-var $action: cs.ActionEntity
-var $status: Object
-
- // The drop action failed
-If($event.dropStatus = "failed")
- $action:=ds.Action.new()
- $action.label:=Last errors.first().message //message is "Error while dropping product XXX"
- $action.status:="TO CHECK"
- $status:=$action.save()
-End if
+If (($event.status.success=False) && ($event.status.errors=Null))
+ //$event.status.errors is filled
+ //if the error comes from the validateDrop event
+ This.status:="Check this product - Drop action failed"
+ $status:=This.save()
+End if
```
diff --git a/versioned_docs/version-21/Project/components.md b/versioned_docs/version-21/Project/components.md
index fb4b3a96599988..0cfd64f9f98038 100644
--- a/versioned_docs/version-21/Project/components.md
+++ b/versioned_docs/version-21/Project/components.md
@@ -5,7 +5,7 @@ title: Dependencies
The 4D [project architecture](../Project/architecture.md) is modular. You can provide additional functionalities to your 4D projects by installing [**components**](Concepts/components.md) and [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md).
-You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories).
+You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/topics/4d-component).
Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties.
@@ -350,7 +350,7 @@ When you add or update a component (whether [local](#local-components) or [from
The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one.
-- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
+- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence.
:::note
diff --git a/versioned_docs/version-21/REST/$filter.md b/versioned_docs/version-21/REST/$filter.md
index 29bf2c20c502e8..50623cde869c9e 100644
--- a/versioned_docs/version-21/REST/$filter.md
+++ b/versioned_docs/version-21/REST/$filter.md
@@ -101,9 +101,9 @@ The *vectorComparison* parameter is a collection of the following elements:
|Property|Type|Description|
|---|---|---|
-|[].vector|Collection of objects)|Mandatory. A collection that represents the vector to compare|
-|[].metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:"cosine" (default if omitted): calculates the cosine distance between vectors."dot": calculates the dot similarity of vectors."euclidean": calculates the Euclidean distance between vectors.|
-||[].threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.|
+|[].vector|Collection of numbers|Mandatory. A collection that represents the vector to compare|
+|[].metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:"cosine" (default if omitted): calculates the cosine similarity between vectors."dot": calculates the dot similarity of vectors."euclidean": calculates the Euclidean distance between vectors.|
+|[].threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.|
Only a subset of **comparator** symbols are supported with vector comparisons. Note that they compare results to the threshold value:
diff --git a/versioned_docs/version-21/WebServer/sessions.md b/versioned_docs/version-21/WebServer/sessions.md
index 44314a3c4fd8da..d0a2bd033577be 100644
--- a/versioned_docs/version-21/WebServer/sessions.md
+++ b/versioned_docs/version-21/WebServer/sessions.md
@@ -209,9 +209,9 @@ Else
End if
```
-:::note
+:::tips Related blog posts
-For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post.
+[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/)
:::
diff --git a/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md b/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md
index c00f2fc291c7e2..360595e057011e 100644
--- a/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md
+++ b/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md
@@ -244,7 +244,7 @@ The following standard actions are available with 4D Write Pro areas.
### Other actions
-Several other standard actions are available in 4D forms and can be used in 4D Write Pro areas:
+[Several other standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) are available in 4D forms and can be used in 4D Write Pro areas:
* *Edit actions*, such as copy/paste actions.
* *Font* actions, such as fontBold or fontSize.
diff --git a/versioned_docs/version-21/aikit/Classes/OpenAI.md b/versioned_docs/version-21/aikit/Classes/OpenAI.md
index 3d1dcd75409a18..9fded0091c08d7 100644
--- a/versioned_docs/version-21/aikit/Classes/OpenAI.md
+++ b/versioned_docs/version-21/aikit/Classes/OpenAI.md
@@ -11,8 +11,8 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources.
| Property Name | Type | Description | Optional |
|-------------------|-------|-----------------------------------|----------|
-| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | No for OpenAI |
-| `baseURL` | Text | Base URL for OpenAI API requests. | Yes |
+| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider |
+| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider)|
| `organization` | Text | Your OpenAI Organization ID. | Yes |
| `project` | Text | Your OpenAI Project ID. | Yes |
diff --git a/versioned_docs/version-21/aikit/compatible-openai.md b/versioned_docs/version-21/aikit/compatible-openai.md
index 48db88a10f7216..847aec12b412c1 100644
--- a/versioned_docs/version-21/aikit/compatible-openai.md
+++ b/versioned_docs/version-21/aikit/compatible-openai.md
@@ -7,7 +7,7 @@ title: Providers
Many AI providers propose an OpenAI-like API, so you can use this project to connect to them.
-To do so you just have to change the original `baseURL` by the provider one and use their api key if needed.
+To do so you just have to set the `baseURL` to the provider one and use their api key if needed.
```4d
$client.baseURL:="https://api.mistral.ai/v1"
@@ -17,7 +17,7 @@ Some of them
## Remote
-|Provider|Base url|
+|Provider|baseURL|
|-|-|
|https://mistral.ai/|https://api.mistral.ai/v1|
|https://www.deepseek.com/|https://api.deepseek.com|
@@ -31,7 +31,7 @@ Some of them
## Local
-| Provider | Default base url | Doc |
+| Provider | Default baseURL | Doc |
|------------------ |---------------------------|-----------------------------------------------|
|https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility |
|https://lmstudio.ai/| http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai |
diff --git a/versioned_docs/version-21/aikit/overview.md b/versioned_docs/version-21/aikit/overview.md
index eb664c46d783e6..e9772f39bc5ba5 100644
--- a/versioned_docs/version-21/aikit/overview.md
+++ b/versioned_docs/version-21/aikit/overview.md
@@ -22,7 +22,7 @@ First of all, initialize the OpenAI client using your API key
var $client:=cs.AIKit.OpenAI.new("your api key")
```
-For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter.
+For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter.
```4d
var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"})
@@ -44,7 +44,7 @@ var $result:=$client..()
The `$result` contains the `HTTPRequest`, a `success` status, a collection of `errors` and more. See [OpenAIResult](Classes/OpenAIResult.md)
-See some examples bellow.
+See some examples below.
#### Chat
diff --git a/versioned_docs/version-21/assets/en/FormEditor/fluent-dark.png b/versioned_docs/version-21/assets/en/FormEditor/fluent-dark.png
new file mode 100644
index 00000000000000..fe35b22f4c5438
Binary files /dev/null and b/versioned_docs/version-21/assets/en/FormEditor/fluent-dark.png differ
diff --git a/versioned_docs/version-21/assets/en/FormEditor/fluent.png b/versioned_docs/version-21/assets/en/FormEditor/fluent.png
new file mode 100644
index 00000000000000..f8ece4b7fb5fbb
Binary files /dev/null and b/versioned_docs/version-21/assets/en/FormEditor/fluent.png differ
diff --git a/versioned_docs/version-21/commands-legacy/array-to-list.md b/versioned_docs/version-21/commands-legacy/array-to-list.md
index d3247a29055ca8..0464e9802e30fd 100644
--- a/versioned_docs/version-21/commands-legacy/array-to-list.md
+++ b/versioned_docs/version-21/commands-legacy/array-to-list.md
@@ -27,7 +27,7 @@ The optional *itemRefs* parameter, if specified, must be a numeric array synchro
* This command only lets you set first-level items of the list.
* When you use this command with a choice list, it modifies the structure of the application (lists are saved in the structure file), so any modifications made locally are lost when the structure file is updated in production.
-* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project or a component.
+* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component.
You can use ARRAY TO LIST to build a list based on the elements of an array. However, to free yourself from these restrictions and make full use of the lists of values, we recommend using the commands of the *Hierarchical Lists* theme.
diff --git a/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md
index 5a16cc653a0813..2a254f1ab88314 100644
--- a/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md
+++ b/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md
@@ -125,7 +125,11 @@ The following example prevents any new connection from 2 to 4 A.M.
// On Server Open Connection Database Method
#DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer
- If((?02:00:00?<=Current time)&(Current time
+ If((?02:00:00?<=Current time)&(Current time04:00:00?))
+ $result:=22000
+ Else
+ $result:=0
+ End if
```
diff --git a/versioned_docs/version-21/commands-legacy/save-list.md b/versioned_docs/version-21/commands-legacy/save-list.md
index cec6bb9868ce34..17121d79461fdf 100644
--- a/versioned_docs/version-21/commands-legacy/save-list.md
+++ b/versioned_docs/version-21/commands-legacy/save-list.md
@@ -20,7 +20,7 @@ displayed_sidebar: docs
If there is already a list with this name, its contents are replaced.
-**Note:** This command cannot be used in a structure loaded in **read only**, such as a .4dz project or a component.
+**Note:** This command cannot be used in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component.
## See also
diff --git a/versioned_docs/version-21/commands-legacy/value-type.md b/versioned_docs/version-21/commands-legacy/value-type.md
index 69bf5f18487a00..3fdd90420a4b6c 100644
--- a/versioned_docs/version-21/commands-legacy/value-type.md
+++ b/versioned_docs/version-21/commands-legacy/value-type.md
@@ -37,7 +37,6 @@ The command returns a numeric value that can be compared with one of the followi
| Is time | Integer | 11 |
| Is undefined | Integer | 5 |
| Is variant | Integer | 12 |
-| Object array | Integer | 39 |
This command is designed to return the type of a scalar expression, *i.e.* the value stored in or returned by the *expression* parameter. In particular, it can be applied to the following 4D expressions:
diff --git a/versioned_sidebars/version-20-R10-sidebars.json b/versioned_sidebars/version-20-R10-sidebars.json
index 21ce0e323cd78a..acfb0b7c20d3d2 100644
--- a/versioned_sidebars/version-20-R10-sidebars.json
+++ b/versioned_sidebars/version-20-R10-sidebars.json
@@ -3367,6 +3367,11 @@
"label": "4D Mobile App Server",
"href": "https://github.com/4d/4D-Mobile-App-Server/blob/main/README.md"
},
+ {
+ "type": "link",
+ "label": "4D Mobile App Server",
+ "href": "https://github.com/4d/4D-Mobile-App-Server/blob/main/README.md"
+ },
{
"type": "link",
"label": "Build4D",