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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 0 additions & 1 deletion docs/Admin/webAdmin.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ This option is automatically checked if you used the [One-click configuration di

:::

:::note

## Headless Configuration

Expand Down
48 changes: 45 additions & 3 deletions docs/Desktop/clientServer.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ If the published project is not displayed in the **Available** list, select **Cu
- If two servers are executed simultaneously on the same machine, the IP address must be followed by a colon and port number, for example: `192.168.92.104:19814`.
- By default, the publishing port of a 4D Server is 19813. This number can be modified in the Project settings.

> The **Activate development mode** option opens the remote connection in a special read/write mode and requires to access the project folder from the remote 4D (compatibility option).
> The [**Activate development mode**](#development-mode) option opens the remote connection in a special read/write mode and requires to access the project folder from the remote 4D.

Once this page assigns a server, clicking the **OK** button will allow you to connect to the server.

Expand All @@ -62,7 +62,7 @@ Once a connection to the server has been established, the remote project will be

- An updated .4dz version of the project is automatically produced when necessary, *i.e.* when the project has been modified and reloaded by 4D Server. The project is reloaded:
- automatically, when the 4D Server application window comes to the front of the OS or when the 4D application on the same machine saves a modification (see below).
- when the `RELOAD PROJECT` command is executed. Calling this command is necessary for example when you have pulled a new version of the project from the source control platform.
- when the [`RELOAD PROJECT`](../commands-legacy/reload-project.md) command is executed. Calling this command is necessary for example when you have pulled a new version of the project from the source control platform.

### Updating project files on remote machines

Expand All @@ -72,7 +72,7 @@ When an updated .4dz version of the project has been produced on 4D Server, conn

When 4D connects to a 4D Server on the same machine, the application behaves as 4D in single user mode and the design environment allows you to edit project files. This feature allows you to develop a client/server application in the same context as the deployment context.

> When 4D connects to a 4D Server on the same machine, the **development mode** is automatically activated, whatever the [Activate development mode](#opening-a-remote-project) option status.
> When 4D connects to a 4D Server on the same machine, the **development mode** is automatically activated, whatever the [Development mode](#development-mode) status.

Each time 4D performs a **Save all** action from the design environment (explicitly from **File** menu or implicitly by switching to application mode for example), 4D Server synchronously reloads project files. 4D waits for 4D Server to finish reloading the project files before it continues.

Expand All @@ -86,3 +86,45 @@ However, you need to pay attention to the following behavior differences compare

> It is not recommended to install plug-ins or components at the 4D or 4D Server application level.


## Development mode

The **Development mode** in 4D Server is a special project opening mode that allows read/write access for connected remote 4D applications. The project must be available in [**interpreted** mode](../Concepts/interpreted.md).

This mode allows one or more developers to work simultaneously on the same project in Design environment. When a project is opened in **Development mode**:

- Project files are available in read/write so that you can edit methods, forms, etc.
- Several remote 4D can concurrently open the same interpreted project files and edit them. An automatic locking system prevents from concurrent access to the same resource.
- Modifications are made available to all remote developers. Note however that there is no automatic push to remote developers, they need to refresh to get latest versions of files (a refresh is done each time the developer switches from design mode to application mode for example, or selects **Save all** from the **File** menu).

To use this mode, select the **Activate development mode** option in the [connection dialog box](#opening-a-remote-project) from your remote 4D. You are prompted to **Select 4D project file**: you need to select the [.project file](../Project/architecture.md#applicationname4dproject-file) that 4D Server has opened. If you select a different file, an alert dialog box warns you that the development mode is not available. It means that the remote 4D must have access to the project folder over the network (the whole project folder must be shared, i.e. the root folder of the project).

:::caution

For performance reasons with this configuration, it is strongly recommended that the project folder be stored on a dedicated file server (e.g. a NAS) on a local network.

:::

:::note

When both the server and the remote 4D are on the same machine, [additional rules applies](#using-4d-and-4d-server-on-the-same-machine).

:::

Here is an overview of the development mode architecture:

![](../assets/en/Desktop/develop-mode.png)


:::note Compatibility

This feature is designed for small-size development teams who are used to work on binary databases and want to benefit from project features while maintaining their current organisation. However, for multi-user development on 4D projects, we recommend using a standard architecture where developers work on their machine and manage their work using source control repository tools (Git, SVN, etc.). This organisation provides a great flexibility by allowing developers to work on different branches, and compare, merge, or revert modifications.

:::


:::tip Related blog post

[Developing Concurrently on 4D Server in Project Mode](https://blog.4d.com/developing-concurrently-on-4d-server-in-project-mode/)

:::
2 changes: 1 addition & 1 deletion docs/Desktop/sessions.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ When creating an OTP token in client/server environment, you need to execute the

:::tip Related blog post

[Embed Qodly pages in a 4D web area without extra cost](https://blog.4d.com/embed-qodly-pages-in-a-4d-web-area-without-extra-cost)
[Embed Qodly pages in a 4D web area without extra cost](https://blog.4d.com/share-your-4d-remote-client-session-with-web-accesses/)

:::

Expand Down
20 changes: 15 additions & 5 deletions docs/FormObjects/webArea_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,21 @@ It is possible to create several web areas in the same form. Note, however, that

Several dedicated [standard actions](#standard-actions), numerous [language commands](../category/web-area) as well as generic and specific [form events](#form-events) allow the developer to control the functioning of web areas. Specific variables can be used to exchange information between the area and the 4D environment.

:::info Displaying Qodly pages
## Displaying Qodly pages

Web areas can be used to display [Qodly pages](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/pageLoaderOverview) and provide 4D desktop application users with modern, CSS-based web interface.

You can embed a Qodly page inside a Web Area and then update [Qodly sources](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/qodlySources) from 4D by calling [`WA EXECUTE JAVASCRIPT FUNCTION`](../commands-legacy/wa-execute-javascript-function.md).

In 4D client/server applications, Qodly pages inside Web areas can [share their session with the remote user](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas) for a high level of security.

:::tip Related blog post

[Enhance your Desktop Interface with Web widgets using 4D Qodly Pro](https://blog.4d.com/build-modern-hybrid-desktop-apps-with-4d-and-qodly-pro/)

:::

In 4D client/server applications, Web areas can be used to display Qodly pages and [share the remote user session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). This feature allows you to design web-based interfaces for your client/server desktop applications.

:::

## Specific properties

Expand Down Expand Up @@ -243,7 +253,7 @@ When you have done the settings as described above, you then have new options su

## Supported Properties

[Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Method](properties_Action.md#method) - [Object Name](properties_Object.md#object-name) - [Progression](properties_WebArea.md#progression) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [URL](properties_WebArea.md#url) - [Use embedded Web rendering engine](properties_WebArea.md#use-embedded-web-rendering-engine) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibilty](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width)
[Access 4D methods](properties_WebArea.md#access-4d-methods) - [Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Method](properties_Action.md#method) - [Object Name](properties_Object.md#object-name) - [Progression](properties_WebArea.md#progression) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [URL](properties_WebArea.md#url) - [Use embedded Web rendering engine](properties_WebArea.md#use-embedded-web-rendering-engine) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibilty](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width)

## 4DCEFParameters.json

Expand Down Expand Up @@ -346,7 +356,7 @@ The default 4DCEFParameters.json file contains the following switches:
}
```

:::info Related blog post
:::tip Related blog post

[Custom Parameters for Initializing Embedded Web Area](https://blog.4d.com/custom-parameters-for-initializing-embedded-web-area/)

Expand Down
26 changes: 13 additions & 13 deletions docs/Notes/updates.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,20 @@ Read [**What’s new in 4D 21 R2**](https://blog.4d.com/en-whats-new-in-4d-21-r2

|Library|Current version|Updated in 4D|Comment|
|---|---|---|----|
|BoringSSL|9b86817|**21**|Used for QUIC|
|CEF|7258|**21**|Chromium 139|
|BoringSSL|9b86817|21|Used for QUIC|
|CEF|7258|21|Chromium 139|
|Hunspell|1.7.2|20|Used for spell checking in 4D forms and 4D Write Pro|
|ICU|77.1|**21**|This upgrade forces an automatic rebuild of alphanumeric, text and object indexes.|
|libldap|2.6.10|**21**||
|ICU|77.1|21|This upgrade forces an automatic rebuild of alphanumeric, text and object indexes.|
|libldap|2.6.10|21||
|libsasl|2.1.28|20||
|Liblsquic|4.2.0|20 R10|Used for QUIC|
|Libuv |1.51.0|**21**|Used for QUIC|
|libZip|1.11.4|**21**|Used by zip class, 4D Write Pro, svg and serverNet components|
|LZMA|5.8.1|**21**||
|ngtcp2|1.18.0|**21**|Used for QUIC|
|OpenSSL|3.5.2|**21**||
|PDFWriter|4.7.0|**21**|Used for [`WP Export document`](../WritePro/commands/wp-export-document.md) and [`WP Export variable`](../WritePro/commands/wp-export-variable.md) |
|SpreadJS|18.2.0|21 R2|See [this blog post](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) for an overview of the new features|
|Libuv |1.51.0|21|Used for QUIC|
|libZip|1.11.4|21|Used by zip class, 4D Write Pro, svg and serverNet components|
|LZMA|5.8.1|21||
|ngtcp2|1.18.0|21|Used for QUIC|
|OpenSSL|3.5.2|21||
|PDFWriter|4.7.0|21|Used for [`WP Export document`](../WritePro/commands/wp-export-document.md) and [`WP Export variable`](../WritePro/commands/wp-export-variable.md) |
|SpreadJS|18.2.0|**21 R2**|See [this blog post](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) for an overview of the new features|
|webKit|WKWebView|19||
|Xerces|3.3.0|**21**|Used for XML commands|
|Zlib|1.3.1|**21**||
|Xerces|3.3.0|21|Used for XML commands|
|Zlib|1.3.1|21||
20 changes: 14 additions & 6 deletions docs/Project/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,35 @@ title: 4D at a glance
slug: /GettingStarted/overview
---

A 4D project contains all of the source code of a 4D application, whatever its deployment type (web, mobile, or desktop), from the database structure to the user interface, including code, forms, menus, user settings, or any required resources. A 4D project is primarily made of text-based files.
A 4D project contains all of the source code of a 4D application, whatever its deployment type (web, desktop, or mobile), from the database structure to the user interface, including code, web pages, forms, menus, user settings, or any required resources. A 4D project is primarily made of text-based files.


## Project files

4D project files are open and edited using regular 4D platform applications (4D or 4D Server). With 4D, full-featured editors are available to manage files, including a structure editor, a [Code Editor](../code-editor/write-class-method.md), a [form editor](../FormEditor/formEditor.md), a menu editor...
4D project files are open and edited using regular 4D platform applications (4D or 4D Server), on Windows or macOS. With 4D, full-featured editors are available to manage files, including a [code editor](../code-editor/write-class-method.md), a [web interface builder (4D Qodly Pro)](https://developer.4d.com/qodly/), a [form editor](../FormEditor/formEditor.md), a structure editor, a menu editor...

Since projects are in human-readable, plain text files (JSON, XML, etc.), they can be read or edited manually by developers, using any code editor.

In addition, 4D project files make it easier to program generically, create application templates, and share code. Project are organized internally in [folders and files](Project/architecture.md).
In addition, 4D project files make it easier to program generically, create application templates, and share code. Project are organized internally in [folders and files](../Project/architecture.md).


## Development

4D projects are developed using the **4D** application. It provides an Integrated Development Environment (IDE) for 4D projects as well as a web server, a mobile project generator, and an application runtime, allowing you to develop, test, and debug any kind of project.
4D projects are developed using the **4D** application. It provides an Integrated Development Environment (IDE) for 4D projects as well as a web server, a web interface builder, a mobile project generator, and an application runtime, allowing you to develop, test, and debug any kind of project.

### Source control

Multi-user development is managed via standard **source control** repository tools (Perforce, Git, SVN, etc.), which allow developers to work on different branches, and compare, merge, or revert modifications.

### Development mode on 4D Server

If you are a small-size development team and you do not want to use a source control tool, you can use the [**Development mode**](../Desktop/clientServer.md#development-mode) of 4D Server, allowing developers to work online on the same project with 4D in remote mode. Note that this alternative mode should be used in specific cases; using an organisation based upon source control tools (see above) is usually recommended.




## Final application
## Deployment

Project files can be [compiled](compiler.md) and easily deployed. 4D allows you to create several types of application from your projects, including [web](WebServer/webServer.md) applications, [desktop](Desktop/building.md) applications (client/server or single-user), or mobile applications.
Project files can be [compiled](compiler.md) and easily deployed. 4D allows you to create several types of application from your projects, including [web](WebServer/webServer.md) applications, [desktop](Desktop/building.md) applications (client/server or single-user), or [mobile applications](https://developer.4d.com/go-mobile/).

Back end applications can be deployed using 4D Server, 4D, or [merged with 4D Volume Desktop](../Desktop/building.md).
Binary file added docs/assets/en/Desktop/develop-mode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions docs/commands-legacy/wa-execute-javascript-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,43 @@ The "getCustomerInfo" JavaScript function receive a number ID as parameter and r
 WA EXECUTE JAVASCRIPT FUNCTION(*,"WA";"getCustomerInfo";$Result;$ID)
```

## Example 3

The `WA EXECUTE JAVASCRIPT FUNCTION` command can be used to update [Qodly sources](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/qodlySources) from a [Qodly page embedded in a Web area](../FormObjects/webArea_overview.md#displaying-qodly-pages).


```4d
// Set local datasource in a specific page
var $Source;$Value;$Page;$Result : Text
$Value:="New Value"
$Source:="title" // title is the name of string datasource
$Main:="Main" // Main is name of the Qodly page
// the namespace is sent as null, as the it's a local source
WA EXECUTE JAVASCRIPT FUNCTION(*;"WA";"Qodly.setSource";$Result;$Source;$Value;Null;$Page)
```

```4d
//Set shared datasource
var $Source;$Value;$Namespace;$Result : Text
$Value:="New Value"
$Source:="title" // `title` is the name of string datasource,
$Namespace:="shared" // `shared` is the namespace of the qodly source
// Since $NameSpace is defined no need to add the $Page arguments
WA EXECUTE JAVASCRIPT FUNCTION(*;"WA";"Qodly.setSource";$Result;$Source;$Value;$Namespace)
```

```4d
//Set current page local datasource
var $Source;$Value;$Result : Text
$Value:="New Value"
$Source:="title" // `title` is the name of string datasource,
WA EXECUTE JAVASCRIPT FUNCTION(*;"WA";"Qodly.setSource";$Result;$Source;$Value)
```


## See also

[Enhance your Desktop Interface with Web widgets using 4D Qodly Pro](https://blog.4d.com/build-modern-hybrid-desktop-apps-with-4d-and-qodly-pro/) (blog post)<br/>
[WA Evaluate JavaScript](wa-evaluate-javascript.md)

## Properties
Expand Down
20 changes: 10 additions & 10 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ module.exports = {
},
sidebarPath: require.resolve('./sidebars.js'),
versions: {
'21': {
label: '21',
'21-R2': {
label: '21 R2 BETA',
banner: 'none',
},
'20-R10': {
label: '20 R10',
'21': {
label: '21',
banner: 'none',
},
'20': {
'20': {
label: '20',
banner: 'none',
},
Expand Down Expand Up @@ -211,19 +211,19 @@ module.exports = {
items: [
{
label: 'Documentation download',
href: 'https://github.com/4d/docs/releases/tag/latest',
to: 'https://github.com/4d/docs/releases/tag/latest',
},
{
label: '4D Doc Center (Where It All Began)',
to: 'https://doc.4d.com',
label: 'Learn 4D',
to: 'https://learn.4d.com',
},
{
label: 'Knowledgebase',
to: 'https://kb.4d.com',
},
{
label: 'Downloads',
to: 'https://us.4d.com/product-download/Feature-Release',
to: 'https://us.4d.com/product-download',
},
{
label: 'Resources',
Expand Down Expand Up @@ -257,7 +257,7 @@ module.exports = {
],
},
],
"copyright": "© 2025 4D SAS - All rights reserved",
"copyright": "© 2026 4D SAS - All rights reserved",
},
},
markdown: {
Expand Down
Loading
Loading