LayoutColumnLayoutElements

Introduction

After defining a Layout with LayoutRows and LayoutColumns you probably want to add items to the defined LayoutColumns.

The layout system is capable of managing different entity types in one LayoutColumns. Information about LayoutElements that should be displayed on a LayoutColumns is managed by the LayoutColumnLayoutElements intermediate model.

To access information of this intermediate model such as the sort_number, you should make use of the pivot information that will always be returned when including the layoutElements relation described in LayoutColumns or the layoutColumns relation on LayoutElements. You can find the available entity types that can be attached to a LayoutColumn below.

Model Definition

Relations

KeyRelationTypeRelation Field(s)

layoutColumn

Belongs to

layout_column_id

layoutElement

LayoutElement

Morph to

layout_element_type, layout_element_id

LayoutElement types

LayoutElement types are keys for different entities existing in our system. Every LayoutElement type listed here has itself a relationship to LayoutColumns which can be accessed with the key layoutColumns.

When retrieving such a relation (internally utilizing this intermediate model), there will always be a pivot object attached holding the information described in this section.

You can use the pivot information for sorting and such.

Affected entities are marked with the trait LayoutElement.

Traits

  • Sortable

  • SoftDeletes

Attach

Attaches a LayoutElement to a LayoutColumn and returns all LayoutColumns the given Element is related to after.

Definition

POST /api/layouts/elements/columns/attach

Request Keys

KeyTypeDefaultDescription

layout_element_type *

string

null

The title for the layout

layout_element_id*

string

-

Layoutable type (see above)

layout_column_ids*

array

-

Layoutable ID (see above)

sort_number

integer

Current highest +1

The index of the LayoutElementLayoutColumn related to the LayoutColumn

Keys with * are required.

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/layouts/elements/columns/attach', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        "layout_element_type": "formField",
        'layout_element_id' => 1,
        'layout_column_ids': [1]
    ]
]);

Example Response

[
  {
    "id": 1,
    "title": null,
    "layout_row_id": 1,
    "width": 6,
    "sort_number": 1,
    "created_at": "2021-10-25 19:07:59",
    "updated_at": "2021-10-25 19:07:59",
    "deleted_at": null,
    "pivot": {
      "layout_element_id": 1,
      "layout_column_id": 1,
      "layout_element_type": "formField",
      "created_at": "2023-04-17 21:23:07",
      "updated_at": "2023-04-17 21:23:07",
      "id": 2,
      "sort_number": 1
    }
  },
  {
    "id": 2,
    "title": null,
    "layout_row_id": 2,
    "width": 6,
    "sort_number": 2,
    "created_at": "2021-10-25 19:07:59",
    "updated_at": "2021-10-25 19:07:59",
    "deleted_at": null,
    "pivot": {
      "layout_element_id": 1,
      "layout_column_id": 2,
      "layout_element_type": "formField",
      "created_at": "2023-04-28 14:14:04",
      "updated_at": "2023-04-28 14:14:04",
      "id": 104,
      "sort_number": 1
    }
  }
]

Sync

Attaches the given LayoutElement to many LayoutColumns and detaches the element from any LayoutColumn that is not posted.

Definition

POST /api/layouts/elements/columns/sync

KeyTypeDefaultDescription

layout_element_type *

string

null

The title for the layout.

layout_element_id*

string

-

Layoutable type (see above).

layout_column_ids*

array

-

Layoutable ID (see above).

sort_number

integer

Current highest +1

The index of the LayoutElementLayoutColumn related to the LayoutColumn.

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/layouts/elements/columns/sync', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        "layout_element_type": "formField",
        'layout_element_id' => 1,
        'layout_column_ids': [1]
    ]
]);

Example Response

[
  {
    "id": 1,
    "title": null,
    "layout_row_id": 1,
    "width": 12,
    "sort_number": 1,
    "created_at": "2021-10-25 19:07:59",
    "updated_at": "2021-10-25 19:07:59",
    "deleted_at": null,
    "pivot": {
      "layout_element_id": 1,
      "layout_column_id": 1,
      "layout_element_type": "formField",
      "created_at": "2023-04-28 14:16:16",
      "updated_at": "2023-04-28 14:16:16",
      "id": 105,
      "sort_number": 5
    }
  }
]

Detach

Detaches a LayoutElement from a LayoutColumn and returns all LayoutColumns the given Element is related to after.

Definition

POST /api/layouts/elements/columns/detach

Request Keys

KeyTypeDefaultDescription

layout_element_type*

string

null

The title for the layout.

layout_element_id*

string

-

Layoutable type (see above).

layout_column_ids*

array

-

Layoutable ID (see above).

sort_number

integer

Current highest +1

The index of the LayoutElementLayoutColumn related to the LayoutColumn.

Keys with * are required.

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/layouts/elements/columns/detach', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        "layout_element_type" => "formField",
        "layout_element_id" => 1,
        "layout_column_ids" => [1]
    ]
]);

Example Response

[]

Last updated