From b6af5b270e0f1eaf7496009302e0e5f9dddc61f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Nov 2024 20:01:09 +0100 Subject: [PATCH 1/7] correct links and text --- .../extension-registry/extension-manifest.md | 42 ++++++++++++------- .../customizing/package-manifest.md | 14 +++---- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md b/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md index ae09f33d5f9..e923fd1cfc3 100644 --- a/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md +++ b/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md @@ -1,26 +1,38 @@ -# Extension Manifest +--- +description: +--- -{% hint style="warning" %} -This page is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. -{% endhint %} +# Extension Manifest Each Extension Manifest has to declare its type, this is used to determine where it hooks into the system. It also looks at what data is required to declare within it. The abilities of the extensions rely on the specific extension type. The Type sets the scene for what the extension can do and what it needs to be utilized. Some extension types rely on a reference to other extensions. -The pages of this article describe all the extension types that Backoffice supports. Here is a list of the most common types: +The following overview lists all the available extension types: -{% content-ref url="../../../tutorials/creating-a-custom-dashboard/" %} -[creating-a-custom-dashboard](../../../tutorials/creating-a-custom-dashboard/) +{% content-ref url="../extension-types/" %} +[extension-types](../extension-types/) {% endcontent-ref %} -{% content-ref url="../../property-editors/composition/" %} -[composition](../../property-editors/composition/) -{% endcontent-ref %} -{% content-ref url="../../section-trees/" %} -[section-trees](../../section-trees/) -{% endcontent-ref %} +## Extension Manifest Format + +A Extension Manifest can be written either as JavaScript Object or a JSON Object. + +There is a few general properties, the required set of properties consists of the `type`, `alias` and `name`. + +```typescript +const manifest = { + type: '...', + alias: 'my.customization', + name: 'My customization' + ... +}; +``` + +The `type` defined what it is declaring +The `alias` is a unique identifier for this manifest. It must be globally unique, so make sure to prefix with something that makes your extension unique. +The `name` is a representational name of this manifest, this does not need to be unique but such can be beneficial when debugging extensions. ## Declare Extension Manifest @@ -47,7 +59,7 @@ The bundle extension type can be used for declaring multiple Extension Manifests The bundle declares a single JavaScript file that will be loaded at startup. All the Extension Manifests exported from this Module will be registered in the Extension Registry. -Read more about the `bundle` extension type in the [Bundle](../../../extending/extending-overview/extension-registry/bundle.md) article. +Read more about the `bundle` extension type in the [Bundle](../extension-types/bundle.md) article. ### Using `backofficeEntryPoint` as your foundation @@ -57,4 +69,4 @@ The entry point declares a single JavaScript file that will be loaded and run wh The `entryPbackofficeEntryPointoint` extension is also the way to go if you want to load in external libraries such as jQuery, Angular, React, etc. You can use the `backofficeEntryPoint` to load in the external libraries to be shared by all your extensions. Loading **global CSS files** can also be used in the `backofficeEntryPoint` extension. -Read more about the `backofficeEntryPoint` extension type in the [Entry Point](../../../extending/extending-overview/extension-registry/entry-point.md) article. +Read more about the `backofficeEntryPoint` extension type in the [Entry Point](../extension-types/entry-point.md) article. diff --git a/15/umbraco-cms/customizing/package-manifest.md b/15/umbraco-cms/customizing/package-manifest.md index 49a0d5597e7..188f9661a14 100644 --- a/15/umbraco-cms/customizing/package-manifest.md +++ b/15/umbraco-cms/customizing/package-manifest.md @@ -1,10 +1,10 @@ --- -description: An extension begins with a Package Manifest +description: An extension begins with a Umbraco Package Manifest --- -# Package Manifest +# Umbraco Package Manifest -A Package is declared via an Umbraco Package Manifest. This describes the Package and declares one or more UI Extensions. The Package Manifest is a JSON file that is stored in the `App_Plugins/{YourPackageName}` folder. The file is named `umbraco-package.json`. +A Package is declared via an Umbraco Package Manifest. This describes the Package and declares one or more UI Extensions. The Manifest is a JSON file that is stored in the `App_Plugins/{YourPackageName}` folder. The file is named `umbraco-package.json`. ## Sample Manifest @@ -120,13 +120,9 @@ Umbraco supports the current specification of the property as outlined on MDN We ### Extensions -The `extensions` field is an array of UI Extension objects. Each object describes a single UI Extension. +The `extensions` field is an array of Extension Manifest objects. Each object describes a single client extension. -There are three generic fields that are common to all UI Extensions: - -* `type` - The type of the UI Extension. -* `alias` - The alias of the UI Extension. This must be unique. -* `name` - The name of the UI Extension. +Read more about these in the [Extension Manifests article](./extending-overview/extension-registry/extension-manifest.md). These are the current types of UI Extensions: From 88b0de52b7b2883b41110f58117be7ee8b7e4661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Nov 2024 20:03:16 +0100 Subject: [PATCH 2/7] improve text --- .../extending-overview/extension-registry/extension-registry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-registry.md b/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-registry.md index 943e68c414b..a3e9d7f1fa4 100644 --- a/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-registry.md +++ b/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-registry.md @@ -8,7 +8,7 @@ The extension registry is the center piece of the Backoffice UI. It holds information about most of the Backoffice UI, as most are extensions. This includes the built-in UI. The registry can be manipulated at any time, meaning you can add or remove extensions at runtime. -To provide new UI to the backoffice, you must register them via an extension manifest. This has to be initiated via an Umbraco Package JSON file on the server. This will be your starting point, which enables you to register one or more extensions. +To provide new UI to the backoffice, you must register them via an Extension Manifest. This can be initiated via an Umbraco Package JSON file on the server. This will be your starting point. Declaring a new extension is done by declaring an [extension manifest](./extension-manifest.md). This can be done in one of two ways: From 15215e17e3ba57ada70dbeb58afd1deb9b4e3740 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Nov 2024 20:15:27 +0100 Subject: [PATCH 3/7] remove usage of the word Manifest --- 15/umbraco-cms/customizing/umbraco-package.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/15/umbraco-cms/customizing/umbraco-package.md b/15/umbraco-cms/customizing/umbraco-package.md index fbaa8868e59..b99e21d2956 100644 --- a/15/umbraco-cms/customizing/umbraco-package.md +++ b/15/umbraco-cms/customizing/umbraco-package.md @@ -4,11 +4,11 @@ description: An extension begins with a Umbraco Package # Umbraco Package -A Package is declared via an Umbraco Package. This describes the Package and declares one or more UI Extensions. The Manifest is a JSON file that is stored in the `App_Plugins/{YourPackageName}` folder. The file is named `umbraco-package.json`. +A Package is declared via an Umbraco Package. This describes the Package and declares one or more UI Extensions. The Package declaration is a JSON file that is stored in the `App_Plugins/{YourPackageName}` folder. The file is named `umbraco-package.json`. -## Sample Manifest +## Sample -This is a sample manifest. It is always stored in a folder in `App_Plugins/{YourPackageName}`, with the name `umbraco-package.json`. In this example, the package name is `SirTrevor` and is a text box property Data Type. +Here is a sample manifest. It should be stored in a folder in `App_Plugins/{YourPackageName}`, with the name `umbraco-package.json`. In this example, the package name is `SirTrevor` and is a text box property Data Type. {% hint style="info" %} Before Umbraco 14, the manifest was declared in a `package.manifest` file instead of `umbraco-package.json`. The old format is no longer supported, but you can migrate the contents to the new format. From 40f05867848a31530bd45fafcb55a502510295e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Nov 2024 20:15:41 +0100 Subject: [PATCH 4/7] use the word package --- 15/umbraco-cms/customizing/umbraco-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/15/umbraco-cms/customizing/umbraco-package.md b/15/umbraco-cms/customizing/umbraco-package.md index b99e21d2956..1565eebba93 100644 --- a/15/umbraco-cms/customizing/umbraco-package.md +++ b/15/umbraco-cms/customizing/umbraco-package.md @@ -8,7 +8,7 @@ A Package is declared via an Umbraco Package. This describes the Package and dec ## Sample -Here is a sample manifest. It should be stored in a folder in `App_Plugins/{YourPackageName}`, with the name `umbraco-package.json`. In this example, the package name is `SirTrevor` and is a text box property Data Type. +Here is a sample package. It should be stored in a folder in `App_Plugins/{YourPackageName}`, with the name `umbraco-package.json`. In this example, the package name is `SirTrevor` and is a text box property Data Type. {% hint style="info" %} Before Umbraco 14, the manifest was declared in a `package.manifest` file instead of `umbraco-package.json`. The old format is no longer supported, but you can migrate the contents to the new format. From b4788e89526d4df385d7f1a680b564d1da17d521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Nov 2024 20:15:55 +0100 Subject: [PATCH 5/7] another word change --- 15/umbraco-cms/customizing/umbraco-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/15/umbraco-cms/customizing/umbraco-package.md b/15/umbraco-cms/customizing/umbraco-package.md index 1565eebba93..53ffedabbea 100644 --- a/15/umbraco-cms/customizing/umbraco-package.md +++ b/15/umbraco-cms/customizing/umbraco-package.md @@ -11,7 +11,7 @@ A Package is declared via an Umbraco Package. This describes the Package and dec Here is a sample package. It should be stored in a folder in `App_Plugins/{YourPackageName}`, with the name `umbraco-package.json`. In this example, the package name is `SirTrevor` and is a text box property Data Type. {% hint style="info" %} -Before Umbraco 14, the manifest was declared in a `package.manifest` file instead of `umbraco-package.json`. The old format is no longer supported, but you can migrate the contents to the new format. +Before Umbraco 14, a package was declared in a `package.manifest` file instead of `umbraco-package.json`. The old format is no longer supported, but you can migrate the contents to the new format. {% endhint %} {% code title="umbraco-package.json" lineNumbers="true" %} From 82e81a7a49c487a5184283bcdcef10776e3793fb Mon Sep 17 00:00:00 2001 From: sofietoft Date: Mon, 18 Nov 2024 09:16:55 +0100 Subject: [PATCH 6/7] Fix link and some grammar --- .../extension-registry/extension-manifest.md | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md b/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md index d577ce9bf2b..16c1c9371a3 100644 --- a/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md +++ b/15/umbraco-cms/customizing/extending-overview/extension-registry/extension-manifest.md @@ -8,18 +8,13 @@ description: Learn about the different methods for declaring an Extension Manife The Extension Manifest is the point of entry for any extension. This is the declaration of what you want to register. -The content in this section describes all the extension types that the Backoffice supports. Here is a list of the most common types: - -{% content-ref url="../extension-types/" %} -[extension-types](../extension-types/) -{% endcontent-ref %} - +The content in this section describes all the extension types that the Backoffice supports. Find a list of the most common types in the [Extension Types](../extension-types/) article. ## Extension Manifest Format -A Extension Manifest can be written either as JavaScript Object or a JSON Object. +An Extension Manifest can be written either as a JavaScript Object or a JSON Object. -There is a few general properties, the required set of properties consists of the `type`, `alias` and `name`. +There are a few general properties, the required set of properties consists of the `type`, `alias`, and `name`. ```typescript const manifest = { @@ -30,8 +25,8 @@ const manifest = { }; ``` -The `type` defined what it is declaring -The `alias` is a unique identifier for this manifest. It must be globally unique, so make sure to prefix with something that makes your extension unique. +The `type` defines what it is declaring +The `alias` is a unique identifier for this manifest. It must be globally unique, so make sure to prefix it with something that makes your extension unique. The `name` is a representational name of this manifest, this does not need to be unique but such can be beneficial when debugging extensions. ## Manifest Data @@ -46,13 +41,13 @@ The required fields of any extension manifest are: * `alias`- The alias is used to identify the extension. This has to be unique for each extension. * `name` - The name of the extension. This is used to identify the extension in the UI. -Additionally, many extensions supports the use of the following fields: +Additionally, many extensions support the use of the following fields: * `weight` - Define a weight, to determine the importance or visual order of this extension. -* `conditions` - Define one or more conditions which must be permitted for the extension to become available. [Extension Conditions](../extension-conditions/extension-conditions.md). +* `conditions` - Define one or more conditions that must be permitted for the extension to become available. [Extension Conditions](../extension-conditions/extension-conditions.md). * `kind` - Define a kind-alias of which this manifest should be based upon. Kinds acts like a preset for your manifest. [Extension Kinds](../extension-kind/extension-kind.md). -Many of the Extension Types requires additional information declared as part of a `meta` field. +Many of the Extension Types require additional information declared as part of a `meta` field. ## Registration From 433532f0cb69f66acfb0ee720a7a114ddd44fd07 Mon Sep 17 00:00:00 2001 From: sofietoft Date: Mon, 18 Nov 2024 09:19:39 +0100 Subject: [PATCH 7/7] Update umbraco-package.md --- 15/umbraco-cms/customizing/umbraco-package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/15/umbraco-cms/customizing/umbraco-package.md b/15/umbraco-cms/customizing/umbraco-package.md index 53ffedabbea..1713dac110c 100644 --- a/15/umbraco-cms/customizing/umbraco-package.md +++ b/15/umbraco-cms/customizing/umbraco-package.md @@ -4,7 +4,7 @@ description: An extension begins with a Umbraco Package # Umbraco Package -A Package is declared via an Umbraco Package. This describes the Package and declares one or more UI Extensions. The Package declaration is a JSON file that is stored in the `App_Plugins/{YourPackageName}` folder. The file is named `umbraco-package.json`. +A Package is declared via an Umbraco Package JSON file. This describes the Package and declares one or more UI Extensions. The Package declaration is a JSON file that is stored in the `App_Plugins/{YourPackageName}` folder. The file is named `umbraco-package.json`. ## Sample @@ -41,7 +41,7 @@ Before Umbraco 14, a package was declared in a `package.manifest` file instead o ## Root fields -The `umbraco-package` accept these fields: +The `umbraco-package` accepts these fields: ```json { @@ -78,13 +78,13 @@ The version of your package, if this is not specified there will be no version-s With this field, you can control the telemetry of this package, this will provide Umbraco with the knowledge of how many installations use this package. -Default is `false`. +The default is `false`. ### Allow Public Access This field is used to allow public access to the package. If set to `true`, the package will be available for anonymous usage, for example on the login screen. If set to `false`, the package will only be available to logged-in users. -Default is `false`. +The default is `false`. ### Importmap