From d6b06bde277b31aed8b3008626bd2272272b1af0 Mon Sep 17 00:00:00 2001 From: Esha Noronha Date: Fri, 17 Oct 2025 09:21:01 +0200 Subject: [PATCH 1/3] Updated image paths to current folder --- 13/umbraco-cms/extending/backoffice-tours.md | 16 +++++----- 13/umbraco-cms/extending/content-apps.md | 6 ++-- 13/umbraco-cms/extending/database.md | 2 +- .../extending/macro-parameter-editors.md | 2 +- 13/umbraco-cms/extending/package-manifest.md | 2 +- .../extending/packages/creating-a-package.md | 26 ++++++++-------- .../packages/example-package-repository.md | 4 +-- .../packages/images/azuredevops-build.png | Bin 0 -> 52542 bytes .../packages/images/azuredevops-release.png | Bin 0 -> 26570 bytes .../installing-and-uninstalling-packages.md | 16 +++++----- .../extending/property-editors/tracking.md | 6 ++-- .../section-trees/searchable-trees.md | 4 +-- .../extending/section-trees/sections.md | 4 +-- .../extending/section-trees/trees/README.md | 6 ++-- 13/umbraco-cms/extending/ui-library.md | 4 +-- .../fundamentals/backoffice/README.md | 8 ++--- .../backoffice/content-templates.md | 26 ++++++++-------- .../backoffice/infinite-editing.md | 2 +- .../backoffice/property-editors/README.md | 2 +- .../block-editor/block-grid-editor.md | 24 +++++++-------- .../block-editor/block-list-editor.md | 16 +++++----- .../checkbox-list.md | 4 +-- .../color-picker.md | 4 +-- .../content-picker.md | 4 +-- .../date-time.md | 4 +-- .../built-in-umbraco-property-editors/date.md | 4 +-- .../decimal.md | 4 +-- .../dropdown/README.md | 6 ++-- .../email-address.md | 4 +-- .../eye-dropper-color-picker.md | 4 +-- .../file-upload.md | 6 ++-- .../grid-layout/add-value-programmatically.md | 2 +- .../configuring-the-grid-layout-datatype.md | 8 ++--- .../grid-layout/grid-editors.md | 2 +- .../grid-layout/settings-and-styles.md | 2 +- .../grid-layout/what-are-grid-layouts.md | 4 +-- .../image-cropper.md | 8 ++--- .../label.md | 4 +-- .../listview.md | 28 ++++++++++-------- .../markdown-editor.md | 4 +-- .../media-picker-3.md | 4 +-- .../media-picker.md | 4 +-- .../member-group-picker.md | 4 +-- .../member-picker.md | 4 +-- .../multi-url-picker.md | 4 +-- .../multiple-textbox.md | 4 +-- .../numeric.md | 4 +-- .../radiobutton-list.md | 4 +-- .../rich-text-editor/README.md | 2 +- .../rich-text-editor/rte-styles.md | 6 ++-- .../slider.md | 6 ++-- .../built-in-umbraco-property-editors/tags.md | 8 ++--- .../textarea.md | 8 ++--- .../textbox.md | 6 ++-- .../true-false.md | 4 +-- .../user-picker.md | 4 +-- .../fundamentals/backoffice/variants.md | 12 ++++---- .../fundamentals/code/debugging/README.md | 12 ++++---- .../fundamentals/code/source-control.md | 2 +- .../fundamentals/data/adding-tabs.md | 8 ++--- .../data/content-version-cleanup.md | 6 ++-- .../data/creating-media/README.md | 22 +++++++------- .../creating-media/default-media-types.md | 8 ++--- .../fundamentals/data/data-types/README.md | 4 +-- .../data/data-types/default-data-types.md | 2 +- .../fundamentals/data/dictionary-items.md | 16 +++++----- 13/umbraco-cms/fundamentals/data/relations.md | 14 ++++----- .../fundamentals/data/scheduled-publishing.md | 6 ++-- 13/umbraco-cms/fundamentals/data/users.md | 6 ++-- .../design/partial-view-macro-files.md | 10 +++---- 70 files changed, 246 insertions(+), 240 deletions(-) create mode 100644 13/umbraco-cms/extending/packages/images/azuredevops-build.png create mode 100644 13/umbraco-cms/extending/packages/images/azuredevops-release.png diff --git a/13/umbraco-cms/extending/backoffice-tours.md b/13/umbraco-cms/extending/backoffice-tours.md index 3fb034ed68d..af46993c942 100644 --- a/13/umbraco-cms/extending/backoffice-tours.md +++ b/13/umbraco-cms/extending/backoffice-tours.md @@ -62,7 +62,7 @@ Below is an explanation of each of the properties on the tour configuration obje This is the name that is displayed in the help drawer for the tour. - ![Tour name highlighted](../../../10/umbraco-cms/extending/images/tourname-v8.png) + ![Tour name highlighted](images/tourname-v8.png) * **alias** The unique alias of your tour. This is used to track the progress a user has made while taking a tour. The progress information is stored in the `TourData` column of the `UmbracoUsers` table in the database. @@ -70,7 +70,7 @@ Below is an explanation of each of the properties on the tour configuration obje The group property is used to group related tours in the help drawer under a common subject (for example Getting started). - ![Tour group highlighted](../../../10/umbraco-cms/extending/images/tourgroup-v8.png) + ![Tour group highlighted](images/tourgroup-v8.png) * **groupOrder** This is used to control the order of the groups in the help drawer. This must be an integer value. @@ -78,7 +78,7 @@ Below is an explanation of each of the properties on the tour configuration obje A boolean value that indicates if the "Don't show this tour again" should be shown on the tour steps. If the user clicks this link the tour will no longer be shown in the help drawer. - ![Tour allow disable link highlighted](../../../10/umbraco-cms/extending/images/tourallowdisable-v8.png) + ![Tour allow disable link highlighted](images/tourallowdisable-v8.png) * **culture** You have the option to set a culture, such as nl-NL. This tour will exclusively be displayed to users who have set this culture in their profile. @@ -88,7 +88,7 @@ Below is an explanation of each of the properties on the tour configuration obje The `contentType` property can also be used to limit the tours to content types that are using a specific composition. This will show the tour on all nodes that are using a specific composition. - ![Content Type specific tours](<../../../10/umbraco-cms/extending/images/contentTypespecific (1) (1) (1) (1) (1).png>) + ![Content Type specific tours](images/contentTypespecific.png) In the image above, two tours are available on the _Welcome_ node: @@ -133,12 +133,12 @@ Below is an explanation of each of the properties on the tour step object. This the title shown on the tour step. - ![Tour step highlighted](../../../10/umbraco-cms/extending/images/steptitle-v8.png) + ![Tour step highlighted](images/steptitle-v8.png) * **content** This text will be shown on the tour step, it can contain HTML markup. - ![Tour content highlighted](../../../10/umbraco-cms/extending/images/stepcontent-v8.png) + ![Tour content highlighted](images/stepcontent-v8.png) * **type** The type of step. Currently, only one type is supported : "intro". This will center the step and show a "Start tour" button. @@ -156,7 +156,7 @@ Below is an explanation of each of the properties on the tour step object. Use the developer tools from your browser to find the id, class and data-attribute. {% endhint %} -
+
* **elementPreventClick** @@ -182,7 +182,7 @@ Below is an explanation of each of the properties on the tour step object. The image below shows the entire tree highlighted, but requires the user to click on a specific tree element. - ![Step eventElement highlighted](../../../10/umbraco-cms/extending/images/step-event-element-v8.png) + ![Step eventElement highlighted](images/step-event-element-v8.png) * **skipStepIfVisible** A CSS selector for an element that, if it is visible, will skip this tour step. diff --git a/13/umbraco-cms/extending/content-apps.md b/13/umbraco-cms/extending/content-apps.md index fd7d9d46f5f..67d1e6fbefb 100644 --- a/13/umbraco-cms/extending/content-apps.md +++ b/13/umbraco-cms/extending/content-apps.md @@ -10,7 +10,7 @@ Content Apps are **companions** to the editing experience when working with cont With Content Apps, editors can switch from editing 'Content' to accessing contextual information related to the item they are editing. -![Content Apps in backoffice](../../../10/umbraco-cms/extending/images/content-app-1.png) +![Content Apps in backoffice](images/content-app-1.png) ### Default Content Apps @@ -144,7 +144,7 @@ And in the `.html` file: After the above edits are done, restart your application. Go to any content node and you should now see an app called Word Counter. Clicking on the icon should say "Amount of words for each property" and confirm the details of the current item and user. You can now adapt your Content App to retrieve external data using the standard Umbraco and AngularJS approach. -![Content App in action: Word Counter](../../../10/umbraco-cms/extending/images/content-app-2.png) +![Content App in action: Word Counter](images/content-app-2.png) ### Limiting according to type @@ -278,7 +278,7 @@ There are times when you want to draw the attention of editors to your content b When you set a badge, a circle with a chosen background and a number in it will be added to the content app icon. -![Content App badge](../../../10/umbraco-cms/extending/images/content-app-badge.png) +![Content App badge](images/content-app-badge.png) You can enable a badge by using this code in the angular controller of your content app. diff --git a/13/umbraco-cms/extending/database.md b/13/umbraco-cms/extending/database.md index 855415a7aea..108c82a225f 100644 --- a/13/umbraco-cms/extending/database.md +++ b/13/umbraco-cms/extending/database.md @@ -8,7 +8,7 @@ It is possible to add custom database tables to your site to store additional da The end result looks like this: -![Database result of a migration](<../../../10/umbraco-cms/extending/images/db-table (1) (1) (1).png>) +![Database result of a migration](images/db-table.png) ## Using a Composer and Component diff --git a/13/umbraco-cms/extending/macro-parameter-editors.md b/13/umbraco-cms/extending/macro-parameter-editors.md index fec1967d30c..d7396d4a5ba 100644 --- a/13/umbraco-cms/extending/macro-parameter-editors.md +++ b/13/umbraco-cms/extending/macro-parameter-editors.md @@ -133,7 +133,7 @@ angular.module("umbraco").controller("Our.Umbraco.ImagePositionController", func The final custom parameter should look like this: -![Image Position Radio Button Options](../../../10/umbraco-cms/extending/images/image-position-v8.png) +![Image Position Radio Button Options](images/image-position-v8.png) #### Using defaultConfig diff --git a/13/umbraco-cms/extending/package-manifest.md b/13/umbraco-cms/extending/package-manifest.md index 591b048a328..8be8a7b0364 100644 --- a/13/umbraco-cms/extending/package-manifest.md +++ b/13/umbraco-cms/extending/package-manifest.md @@ -322,7 +322,7 @@ To associate the hosted JSON schema file to all package.manifest files you will * File -> Preferences -> Settings. The **Settings** window opens. * In the **User** tab, go to **Extensions** -> **JSON** -> **Schemas**. -
+
* Select **Edit in settings.json** from the **Schemas** section. * Add the following snippet in the `settings.json` file: diff --git a/13/umbraco-cms/extending/packages/creating-a-package.md b/13/umbraco-cms/extending/packages/creating-a-package.md index 403e1f253a5..dfe76f29e79 100644 --- a/13/umbraco-cms/extending/packages/creating-a-package.md +++ b/13/umbraco-cms/extending/packages/creating-a-package.md @@ -14,7 +14,7 @@ To create a package, you first need to create a package schema through the Umbra 2. Select `Created` in the top-right corner of the screen. 3. Select the `Create package` button. - ![Buttons to select for creating a package schema in the backoffice](../../../../10/umbraco-cms/extending/packages/images/creating-package-menu-v9.png) + ![Buttons to select for creating a package schema in the backoffice](images/creating-package-menu-v9.png) 4. On the `Create package` page, there are fields that you can use to construct the contents of your package that are based on items from the backoffice. 5. Enter the package name at the top - we will call our dashboard the same as in the mentioned [Tutorial](../../tutorials/creating-a-custom-dashboard/): `Custom Welcome Dashboard`. @@ -45,7 +45,7 @@ After filling out all the information, we can select **Create** to create the pa If your package doesn't include backoffice specific items, the result from downloading it will be just a `package.xml` file. Otherwise, if you select media files you will download a ZIP package that looks like this: -![Content of a ZIP package](../../../../10/umbraco-cms/extending/packages/images/zip-package-v9.png) +![Content of a ZIP package](images/zip-package-v9.png) Additionally to the `package.xml`, there is a folder containing the media items for your package. The rest of the information is recorded in the XML schema document. @@ -96,23 +96,23 @@ For a guide on how to install the project templates, follow the 2 steps listed i The outcome is the files generated below: -![Content of an empty package](<../../../../10/umbraco-cms/extending/packages/images/empty-package-from-template (1).png>) +![Content of an empty package](images/empty-package-from-template.png) -Apart from the project file, you can find an empty `package.manifest` inside the **App\_Plugins** folder, which we will replace with the one created from the [Creating a Custom Dashboard Tutorial](../../tutorials/creating-a-custom-dashboard/). But more importantly, it also contains a `build/CustomWelcomeDashboard.targets` file. +Apart from the project file, you can find an empty `package.manifest` inside the **App_Plugins** folder, which we will replace with the one created from the [Creating a Custom Dashboard Tutorial](../../tutorials/creating-a-custom-dashboard/). But more importantly, it also contains a `build/CustomWelcomeDashboard.targets` file. This file contains an `msbuild` target that is executed when a project has a dependency on this package. It copies the `App_Plugins` folder into the project on build. This is required for having Umbraco packages in a NuGet package format. {% hint style="info" %} -If you are planning to overwrite the contents of the **App\_Plugins** folder, make sure that the subfolder containing your package contents has the same name as the one you specified after the `--name` flag and that the `package.manifest` has the correct path references to your files. +If you are planning to overwrite the contents of the **App_Plugins** folder, make sure that the subfolder containing your package contents has the same name as the one you specified after the `--name` flag and that the `package.manifest` has the correct path references to your files. {% endhint %} You can also add your custom C# files in the root of the package folder which will be part of the DLL of the package, but for our example, this won't be necessary. ### Transfer files -As mentioned previously, let's navigate to the **App\_Plugins** folder and replace its contents with the custom files we created for our new dashboard. +As mentioned previously, let's navigate to the **App_Plugins** folder and replace its contents with the custom files we created for our new dashboard. -![App\_Plugins with dashboard files](../../../../10/umbraco-cms/extending/packages/images/app-pligins-contents.png) +![App\_Plugins with dashboard files](images/app-pligins-contents.png) ### Specify package properties @@ -120,7 +120,7 @@ In this section, we will demonstrate how you can add metadata about the package Now that Umbraco 9 is built on ASP.NET Core, you can add values directly to the package `csproj` file and it will pick them up. If you don't want to manually edit the `csproj` file, you can right-click your project, go to _Properties_ and then to _Package_. There you can insert your specific information: -![Package properties](<../../../../10/umbraco-cms/extending/packages/images/package-properties (1).png>) +![Package properties](images/package-properties.png) Here is an example of some basic properties that you can specify in your project file: @@ -217,7 +217,7 @@ public class PackageMigrationPlan : AutomaticPackageMigrationPlan } ``` -![Automatic package migration](../../../../10/umbraco-cms/extending/packages/images/embeded-resource.png) +![Automatic package migration](images/embeded-resource.png) {% hint style="info" %} Whenever the embedded package.xml file changes, the automatic package migration plan is executed again. This is due to the fact that the migration state is based on the file hash. Existing schema or content will not be overwritten in this process. @@ -291,13 +291,13 @@ public class CustomPackageMigration : PackageMigrationBase Here we also added the ZIP file as an embedded resource to the package project. -![ZIP as an embedded resource](<../../../../10/umbraco-cms/extending/packages/images/embeded-resource-props (1).png>) +![ZIP as an embedded resource](images/embeded-resource-props.png) -![Automatic package migration](<../../../../10/umbraco-cms/extending/packages/images/embeded-zip-resource (1).png>) +![Automatic package migration](images/embeded-zip-resource.png) Whichever migration plan you choose to create, you will be able to see that your package has been installed after the migration is completed. -![Installed package](../../../../10/umbraco-cms/extending/packages/images/installed-package.png) +![Installed package](images/installed-package.png) When using a custom package migration plan, the current state is ignored by default. This causes it to execute all migrations again whenever this isn't the same as the final state of the plan (e.g. if you added a new migration). This is due to the `IgnoreCurrentState` being set to `true` in the `PackageMigrationPlan` base class. You can override this property and set it to `false` again to make it behave like regular migration plans and only run the migrations that have not yet been executed on the current environment. @@ -318,6 +318,6 @@ By default, all these package migrations are executed unattended during startup } ``` -![Attended package install](../../../../10/umbraco-cms/extending/packages/images/package-install-attended.png) +![Attended package install](images/package-install-attended.png) The configuration of package migrations can be different for each environment and makes it possible to have the migration executed unattended on the development environment, but leave them out or manually execute them on other environments. This is useful when you use a tool like Umbraco Deploy or USync as these will migrate the content. diff --git a/13/umbraco-cms/extending/packages/example-package-repository.md b/13/umbraco-cms/extending/packages/example-package-repository.md index 20057032fc6..3ed07d826d4 100644 --- a/13/umbraco-cms/extending/packages/example-package-repository.md +++ b/13/umbraco-cms/extending/packages/example-package-repository.md @@ -68,13 +68,13 @@ Even if using another tool it may be worth reviewing how we have setup our pipel The build consists of two stages: building the solution and running unit tests. Only if both succeed is the build as a whole considered successful. -![Azure DevOps build pipeline](../../../../10/umbraco-cms/extending/packages/images/azuredevops-build.png) +![Azure DevOps build pipeline](images/azuredevops-build.png) ### Releasing the Package We release the package manually in Azure DevOps, with a two stage process. Firstly we release to a "pre-releases" feed, and then after manual approval, to NuGet. -![Azure DevOps release pipeline](../../../../10/umbraco-cms/extending/packages/images/azuredevops-release.png) +![Azure DevOps release pipeline](images/azuredevops-release.png) diff --git a/13/umbraco-cms/extending/packages/images/azuredevops-build.png b/13/umbraco-cms/extending/packages/images/azuredevops-build.png new file mode 100644 index 0000000000000000000000000000000000000000..763fbe991d381b3bcae7fe66fc4aefc86148a5e2 GIT binary patch literal 52542 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π@K}RY&Dtfd$=p%C;gjcuElVYk z$)mwg*Wk(ADu0plRGXgej_yX?3*wDIYzx&D{AcT~sUzt=P=4R)gCBXP?`uFu0`_!H z<(13+GRj*G-P(Bz(F4ECa~`XQpFK_4=-66PgvRP*^YHIvm^?kNJB?t4w_y)V407@w zs-0qv1>o&_O8baLAwgf~?V$^YYuu9kJjeKUNx8J#viVmLCDce@*n6m9KTrva#hL@~}Z{8p|=Yvcp+pUS7V4n~pxF!?&%ZPWbcRxIjvY{;H4E!cV-rF)BU(zPI z5Co0u+*0A#e;Q~CCj^qzkwGI1rDp0n0hJ$eU^fkH*!^PHhzHtUL6KL+|LKD zooz4eB~P2<%5u~~>^Q#ad=E<4aq!s@hDGnv)C=I-PJ^UhgUgIwd1H)^Tlejfs?5q_ zyyVO;s0y_blaS#nz<$G?*TDoCUf3;{Tdz)%+V`ABqukd2N$)+C{S=@BeOBWGG&KdP z&}4Vb0V}T}FTow9*5yt?YSmrQC!gOnm&E5Zm`h$7UC^d(2nVlCSXqtNYVc)r{(upS zHf825833Id-+K-$t5X&f6cW$)1T<_b;D12o))w(VM@ecnYVc_3sk z=(3{&jZ0Ftx5PgwJG6Ydj!7Hxq0H*;a)25W=H0)|V?PmM!%FUE9g%)*G*QPsE=?LZ z=BrF^5`$qvSJpa2u4_-mdrd~8`Hwz%G-9(ZQiC(EmA=rB^Z64-3SAi6N7wX6AW&KG z$U5+bty#bl&+>_lUq%GukqU5ds$^j=Kpn6h;8(T!#H3UWp?gd6C8shjXlyNeYV>*6 z(JQq1qm_Bb?^?;SO;>(2_{cm*ncM+ES0*J4-P56lCQkxiRm!Y7uIc29`j3epW8Pbv zU>_<8n53}wg`|h~O3WBlUK4(}b!nEZ z zHZKBmpSN;qhySEYQu`U3QtbPBye>=Z`THQ)x*nSHMeL7t_Lr8`heM(!0}&Pn1g8fU zq~j0Z+4-`6Av_JXRPAi;5u&u)VJ9xx#3R(h#w4Kwk~)Ud$04nFgP~w*^KgejvpNZ8 znkO;Ysqob15OF@T^ zFq_Y0GkcGO6@fub)rA&)TW?6y8-;%%Xd-9z>?$dCaCF?1PUxqK@rA_-b%hvC>UHD5 zdNOzCEpGqEu9(oXD7wsQ^Yei6O1Vs5{Y%qbOYCMqTX)#SF0Dd}B{Uz)FaSLf2W1Vx zg@x<5S#oPhZDLxW-rxPQyel~@2Xkj7Rs<~OpnK5*d<_LaDi z+jQwGx2;QIva?Dw<99^NtlLI;;Q>EdgnPhxhEp}7)Pz_&cH4!drLcPYf)ydbU>ue` z%O{A~$~qumkM{eX!@;!>8cQH|IMnC)`3m2U-5w19ikjS*9r#be$b7pIs?D)oVLJ?j zX=Aj>`s3^@gySFzImjc~5Y-tQ#-9Xb8R>OSt}EM=%vMN`DSaPA3T{uwRlNu->2s`7 z6Hb`VXAOQ_+6yv8qeUW@?E{7!2fODeJ>v&2jo>GklQ*yeCb;jWdVf}eK;_l3n&3yC z5g>GfG`Z%Ua-3p(+H)#&<0ED;xiImnd9#>|vVV*Fbcm31Cc;S#zFGf+^}(F}h}aV! z0e{-tkPcq_6&@;c@NJkzP+ylBl1WvqMF?TJCw-K=Ah+OrF{ zID!8@eYfOZv5M={I=$xV>!*O4XzUjIG3J(4+z2_usRB{{crWFc81P`4i6123og8&W zkPYALT7UKh(G1kPG%0Xd7)RmO2MLJKIkXc1#ITAa*yRPe8k5vOP0<)%d-*6h+%6E= zM3wXmVsWM7R<9prdI{H{Ua6C?7RGAGH*hkf;7@%~$`PhlAlNe<5%5n=Yuc+ZqPriq z*h*DA^p!^-nKtXZ^ka{->gu_<(D$$KjsMc@`+h=^Izor|R}kuug-u zsCdNFHHN(kb%wt_(|ktar*WHoUQm=la+CT6DtCO2TMosjvs!1gb^rJjB-wVc#1B#- z+JJ~A`&LnwYY$lf&8wQ1cQ&o6poOnHrk;ZJIY|M|n=6;iY1@gZXb*A3iy6z82oP>C zVVV|wvds1I@z}7dAGTeZsUuHE+!12{6T#*#tJ3@lnQ0$bR7>4+)RI)W+=5_VI94TP z$cFFpRcr)3MmBtCK?^OM8k%*{(Jy@A;>VR~NkoI{e2C?bGi(T~gsq?N(LD?F%smlw zY*^-$#xO}4ScsN#zFplKxUg|;nzl}1YjT$?Jr}RawIq=o>=ko-XubCR^+65#$O6Kc zg~VCuFCyOFoH25$+AhzYu3wROu`nLLye%f+YCGe&2hksdvDl@;4mK`#OUR$ zT^>Sx+aDC5uT9@I1oH;U0-i)m&Lz^t`^1*DtdWS^Wt5T&FJoq3_`xPmOF?wP0)H`h zo%^M9dmRJ7Cy7DSAZRg|yyU})^_Gl+`6JZCf;l?uh%)@5&sybxSkL6p#TpJtA{b+s zIYW**B@8dws^aofQSa{p#2ET$UvY~@(y%iw)z#dv5@V3R_1A~p0Q7z&)^CGDkHruK zo3z}&5R7qExXvW9tWV~H4q5b2dO{1 zT~XaHc|ZG`nQ2z}wW*ExEp1TpL3v(Ov_i`13o;F-24pUNP}f$7YhvHxyT~+%d$gaI zV6G$t1aH2p8Z#uBZe2eGfotD1+j#eI{*!(A5H&ikh+#Khh1qdzL0mDXKGXd!GNe8yMhr)KXq07|=nuUa z+#-CH=Lf_7O}Z&FN}P~EjtA?(Rv-b$)G{bN=N(p-tmt3CblGxy z%^B%&qtkNKq2?qX_to;GUUN@8s2M%-1sG~Mun*0-j0Uq5^A7k|Rh9xxr)p9d*ryTF z{in~js_!ot^F}JtCL6Dre|aN%?@oAseCR!V&gIw>!7$ueSoRCQhi; zSB9zNFD_2&8^#v!*~I(oRZeFl{bt+6=W*boSEC?OXcOP7mSIP1{E58ignrU|s8y)J zse&~Y;Us~egkBnBz$dB4f8em}8e3~Y5H1+vS5!!Il$ELDR^#*A`E2h2b0X2L)>|jX z7~VFr=J)f=kkUd)-Z+q-U#5O(io-kIi%t=gW-0JaShx!(NE)P=Flx2YZlzoVu*qr+ zrc?u;wYHxxm)wxZno#!VJ6GqqqsK2O8?if}1d|$4I=M9;B;KtjWP7Fg?=`uUc91#vt`Mos9}(c1{g9EI zJ6n3C{6Cy8MZ_vy$>7)TQQzx1_<6n-v?Rn$v0oc#EmRZM7EWkp7~Z`v2CD`5Ux{c` z8q!I+Gfk9&CN(K;mZje$(7ITGFM|u?@7(oHM8-QU5$iK@S~UOoaCCDlU^V926V~+4 z$KYWyx7vb(_smM%oVuBUUs>hXG0|qL6z#HY`sUI>n#%y9BeA$UWB4;N;3`0fYAn%vpdSRA-Y z4c>u~2M~D$`S-xO8k}n?{9KJHd(1mheDkp~Nkw#1xL=qmr*6Gj#}DG`5fhevMgp2K zX(E@6Tng&BFYkwk$#g|5U{si-(axyHWV*&HM$!J9E{vg3K; zZuFyYCji9gx_oC7l6@pD`mQMQ82E-p=hQmWLfZWBd^6V^W6Q<$82{QH`F~XL4<%}!b&!&`{ff4Kqqv z?K*7X)UY5iwx(a5R!r}oO!&T6Q=|X}1Y?{Wp*1+=md74VB6x4fY>*>ZlGHx^vnsZx zJe}Jfjmw4-#?_c@{wD4Qo0ah{PF@{bpJAK!1!YTJNDu7eTP@K?N#{EqDB;U5?KreK z#~OjA+y-x>JI*%10mP}5d87`Z-9=(I?|NYCtp#fver1{(g7L1(fS^IuHPFfDBOBjJ zmXW&m#W^0EI*)inutrEJkcjet)e_8?TNOQ0CX>pNn~9_Wijk z2Jd73Ku4y!?!L6ye2KCDyDZ+S`8c?&ezcpc(_dqi@ax2u=+lhsA7XcIOaw0S$||i! zI_6E`>>^*NM#y*Ter3ZbSiSZar}%w3XE~*d#GbqrnO~owpj-CBB;8CwNFdxn8S*AD z!(?l6=b5uqLHbsjpNxXp7DE*^!oXm`#$|J3EeeHQ#co%d=k+6-Lz_AxE!LCK$1Ty4 z1c@UugnDOTqJvu)M$#Q%CPOstRERhCZVD2fDMAev~8y zhspP7X;g*hRorROwLi8W!V~CeMV7|X#?_8AjCtO{N%-ZUl)=2Da{-e`7HxS=3T;ZT z?_+@9cEWnjvTucu6cuaZSb7?8^`Fr4w1p5)!=?UxrOQ@6O@b~-0>JNN{6`a-R`K>9 zC+U=un|}+9-9%}O@L;S7_?4})rPbpjOkhT95RoW1qhd?w4`NPzv-oHamLF6}1jgHP zxBNduY(Tc7JxSt36TJJvkG>_Fm~rMzU&B%3lkTktVCKNe`5d;J-}-}KM!||~NS1hJ7yiB9!>tD!#USLo z$C12?IGL2ZfNgu&Vh}34Xj>_}qH=kXAjX&srj<@nI<|;wUnU-|jhQkr%oG}?-%?^i z;Rths|Hmp36~-f*G-OyYa^>yYU2`&?O>jZN^NbRT!eA8H?{vMk65(~K=Ox}m3TbZR zoaU_Sr}3*cf+|oWTJ`}+^>_n$wFRFoMuS)C16itAF-u318RrrHW1oG+O=0frGtkx%sMT*iQfN7ol~pe5K=4Z4^x z9iYXd^tHx>fX(ns*It3t6mJWlIVr2$Y$mRz%Fx@rTMu ztt>o&#j)HX7VjaO!@m4=??YzyaqbUvydqR&)mTl7yk)#4U0cShm|u^>4c34D>K+%i zUbj5Dwu!0GD&aq~Yv6D`9ToAcb4UXd%v(@v2PhijAODRvqq70J)>Lq_E1Zs*lLB zyYc}B8az0q`Nx;CrETLY+)p8HyJ7mW?5V(8UqRq)SFFd8UdFIv6LCz{1((F}4KzJa zZgQdkCe{QK50_jBun}wed*Jg$6>88dqnCtzh+SsscM6pepSH7O^?WE3i=UE;{uR+# zKSliMDh*F+(v_Vderjr1W+w?va(}RC+h@Hd3oGOh-bjJ(L+0FBk){oWT25LhJ^FKN9#UD(xXbDLGH3N8OLUAk z_)o#u-j`A_s~|}4$-71XS-(Z2Ug+85PK=>dnhHD{t@_P4KOV=t3Q@E3oQi;XL9V&@ zmDUKYxcwwK$EC^;g`>K?&7@Pt-qE%fDj z-V!~kD$Go#N$`}@kaj0yFEsh997^TRwA{AoA&w5PlU~OjXw;R7D#f_k>X_^$2WLPv zrALeX38++_iTWD%o*F=BNTi<>+(1k6rf~t&zWeLj>W|09()yCUEoYMgbLS>QguBFq zJOa&7^n&|wNJM`#e3Q>mCB9;3)0(~BMj#Aa{4CL-p92m1_!il;xi0aStZjGttk$ed zilqJ<{6&Ke$W+k17R2PQdT9Ij8bg=30i30M+UZh7?5-10OM!=wm4yk%g%224RzN=D zJs){hnaDT9MqReJgHSPSB;g%Vk(x8XDJ&*tDCX)Q{oqq9O)tAAICJ}(en32HP^ul` zpK_g>PaKKZOdN8Yi7A0{#4+22t3>trqY$fx;6#J4n~ydm1IAE7c`G7A zby0?yvkFho)l=ZXvEzb%t=D^oOCA7-2v-BU!O}2IUz9(@H$R*MZCm}5FZ%t~2qBGZ zUlmKYXBSKreAkvUb6Qr&YHV1x`emY;p0B)D_PZfYw%y~8f#EXihCa~KAKeMm_1 zahpQ=WkP~*%VE}K`e47%U+$c*$dhRq6HRM#3G=-;W8zr5hC4|nJ2Q1WXLZ*cbzlaY zOEJz_*9&(I8VifXjTq?W$dm*E&;Y!!T2jATiF@{D#L{}GfpTrj(e;Wsafo@P3akq4 zz#L&T&Q{>*y+6vBWu>7yrUb1L@~$cYa1FH)($oDD#qIh2Fv6|>YohUoNPv!eKPPmt zM3~|~L1WPZs6k?VbM@gyQx`*@gol$bHz^wsoP;^BcH=R2eO>Pz8xf$tD*&!ttHDZ?97|CmAhAvx-W`a!TK@Q@c7vvXvLX11NN zOCm}r=DIoyu?W{yBrcs+p2|B~?AI~{&1SNGP13-yLT0i^?mL{b}zE;hVfXw%5HBHlXLav3LV!> ztnh=r`8-N3==KxwH)3y;4P(M~eUO_(i-+n(lnphD(!F&5!IgBknUOa2i}MqA({}x6 z$hur}*Hq4eH2TA6<2W60(H=OY_}Me7+|=4oF-tZiUFx|<7j)&M>3GLf(fmsgJW^Zev? z-Ebfu-gn<5?<@)L+bO^rY@ zE}#$NhK%83?#-g-exr7-6#rWo^FN@EY1Fouq5l`_b6E60vWEkCb0B{GF34!IFdqnW+;|hX{AA()iHJXtJO~}!i*};{wr6%jw81PsgzsP=nzVdSR2B} zaAtCo=DUxxH?j)m+3AXJrqrXdJkswJg}rS$P)4_Jf7QIOUFMkY`X9KdMl*Q8V`1u` zuD|JnUU0#EW#rQK45K118y6s)BwMR;C&2@LBs(=&@SP71%j=461d&zR*=;w|A_V4< zsA9FV-l`xU!5w*b+~rJfxqw^=>aOq!8ITIIBR1W)S8lw|nSyyEf3p0$HP8mFj?Uww z4UXWzxv6se1y@`7>EL{#2#)O0O2!4s9@rR?ChPh|kQg8P<9&TU%t}l3O;IG4o3+0* zEbF1g1lrHnh|=qWqn^avSzX}w=v$6{xCReL&oZU;RXt(O9huU(=cf5O|0&k(oLzE` zI>N|0_-0f-^P6wXZNt0$$p_~I3q9@%u}zA1QqI2q;PLvKIOATGL0C=DD^&i9!mR-n z%@5*O3$wzE=~t%*s)P1GR~1yf^nH*|m#%Dlo{s0M%TqUkHs9ZT(n>BN5gYHeLId$c zhDnXNdaPg%KZ&B%1Z)r$o-Q3Iys&k-4ScF7rWrEOB%Dx3PHBg!A`s9VS7PyCzKtih zMa4ezs>$!g+pcMDN+|95k*Hd98{cN>$^Z=V!zNz5ZBh@lPF=f$xM1US@U5M71o0h-fP_e$lc%4?GKR;Df%zg+OU#^)nXTX!+J-tzP za4esMyG4p!rU7NN!xEz^N5-Aj!&9wFV;wV!l!z1K;=_Mw<p&o?PN3o8q@k;0un^@}xKF-4ZoY@`W-9V;PxU&%#`QFXa=jkN?M4 zxpbfc8*yGrH7@m=-)9vRg2%J|Os{~BdGVW}n{arTA^v6>qlI#dmt89Qztxd(L5`|w zSGOXkPw<#InllS@dojWd7 zS3h0jSZ1A4P((qt!VhMMp<{WEDQd2{AB|AJ7r#1bTj6qmL1lE#q5GmV&E@Znr8ApZYCME<`8 z(nLg^r$(^p3cq*$8##_OQcc+O+k{%Zo4@Dg)fKjzZlIosJk>UVK3*IBKiH^uLr(xj zrBrm}F@P<(qQBCki2PsIxqfY|9FLwy8Ozxl+XSvwpOb}eRWD7qPEre#jL!cbX683! zt#vl`kV1Z`;MHsi`~x@75#O-pp}dX#+wj@#b`4@odL(V@sCy!iTs%_Xn2O+?oht0U{6?7he3LPbOEZo+_h*MV*5`!`?`6p$`NzSYEsOU097J-b?QaKCL4UK z?)=xkV`Ur*#RPc<{rXxu5-@!hAQnCQZA-_0dMRhuZwjQUeZ!-Wft+C(?#9m8CJR?` zop+j#=};J!grGzN zm*1?Dk@pA(NuIE4E>+-+hTvs8;%}XIZ2o%O(5(4Cx_dj1Y=e*gX@4DfiTJJ6gCiZk zso%XkyNzc4x1HP#_*bI8+TRWu@dz+-EqCv^XpL~v0?Wql_aIj*uJztgC?t{vd>-lB zBbonmc|{>M`Op6i;E|wi`s%^?nEzC`;uCrOe9^J%gq{Ded1pI&@YuPGeZS@FKLbwQ zS9a_7I9_9$FK?MD{Fd`tZI`(GjY~&=%bKHwJ$uwL_P4xWD^~aX%W@EpC0T0v#vWR# zH`NQVm-j?$`TZTO;W1!6-a44^FVDZ)W&Y#BRM~i%I?q*4^#fHVi)k-CKZr{n)P9<* zQ(&i(#R9AKwRgI^STjxyf4FV^$t}|sSJoU=_p1`NlyT->T6sC)<6Hq~F6p7AQ|z z;y)T>tL?%)Z;_geXc_gJOsN*E>~|^fAO~l!ubf}dcgEO1-duMb=PzW@JF{xMzwiRa z+soZXu1n~W<>mC|dzW_hEIJ#fO%S`}+xsmD4_ovf-6wRIMr=iRz!+*zl%zlD$V8SI zT=QUgD@jYb1I6AWvNDRc7uYpshj`IX<_m*}?36E}pzfEI`UVTz#R@?{r$pMvKAoP5 z7r5lvfd$2pF&%AyjW^a#;Q2#-yt&oD5);fV9Il^bxQ#|ky5TKqpE93Hgifyp(05t6 z8@f1MjtP59@`qoMSK-51nwwKnRDzJ8mz>V`^F4JSzZUu2Bh(-8S{GF`Q zQ{7|IA~%iuG8Wc;5R)`5^{;DZ-67Z{wish!QxuI~q{|dvZTfw9ntiTvZEV?Uz6ruk6XEDiOnByAZ%!IO z*^uk3!>rnAG?Ua(>?1%t+Kl09`uzjdL#zXlVof^{Dm zjj}u@$9KUm;vJ=NiM*fkJZ#(A7inqAD_6CwHsi#QSHATjzN|psY#11_^?bO>T+(~i zQp>sasm^j${@TYtJ~C|%5$sDb0pjk+}*8Aky0aFgY363qEY0)c_G5sqXvt^?59)sHmt&2SJf;5J9?#(u)exi*yjFkrE(80R@y^Lsw}c zB?yw3070Y^iqrrBA}t7kAPFHPp`7Sbe&?S1=6}bzXPh&}dBY2`_u6}}z4lyde&=V- z_58N}``z7>>V8)nH6n1xz(cU2-QJ5O1*5ny?<9vE&zr=8WQWEgpka^HoFE zAh%9)R+^T-9?RMF^<;2Q8`!tSBE9j)%X&&}pmC&Jao%IdcL5c*iN^}k?3nr`w#+4k zaWl0`H+{@|>I;2dpcTkmQ+R=q2{{ygdbOR+6$iGqJM|-%2%j zuG&522@{&r1MJ`W;Jf#nFKkPV{B>@$HhiltV4fo}11OMl#Rf4@duay!IP%H;l&9}z zs{5qLUtf7^3uq*3+9hV4GFg}z7Kj7oUN2dx$}r|>f?uF}8{NQRdCEeK7*Ov-B=N8n zIyB+Qj89wOWEA=J{3NCxl6%EqtWg%W#dyJo-7^O{mU}|b5ckK?i@39HW343)t1C)wx0X8cHFoz zJQs(w*PRais@;hZ8$2xE^Lpm$={m?De6l&+BNrtC+Jc-KRPNj8qF>K=XimhY;A{4J z<>=oc;Jw@%iN|QIHWlF4(aN_<#*f!{sd%|4S)|tE-+trO+gzA&avAU~y9%J)v1hSo z^BfmXpyP3cQQ!fr+cVCoJIETJ^H%%rTAFc2Jps3ba4lPhU6k7@G%i+gl-LcTzM?O@ zmn=$(uzNu~eBfE@F^6RRzDceIYi|CX>N7fu3A?Xa1hqvPj{yqlZ+3ouzP`}1ykWLJ z0Z||B^3}+88yg61+nHL{lcY+1fTdg)jL<()Fk{a!nYx6_Y8Fxy*uM_y!YL$jQt)g= zjX_r9W1m6}1#cA&$UT^lJ-zIg>mk9^2hA#$!W5H|7ajRg8l}B~t?KDjf=8Sp7=mR- z1o@y;!4u8eiL}z{C1cm%cWZ6oi$KL}Dp&WskHT|r=RWp;3eWkk&C=JX$|=n)n~oJM zs#t=KO2L2F$elL)Q$r8nKyMt|x8Z&}^n~c(^@91CsMEz3w{*b6yr;_{H_&3aYmdjI zSFsIo87e2c*O5NxJg4qaZbQqNa%5~19R<6_tdg{y&;ibT*>DzXNfja~HAxYW>x@!rbU@C> z{pDSw)cX!k^GuHssW|qJm>n`G(YJ*%&yO+t1OX*EvJytu+J}p86pXCEeI$TeM}xk( zRp0T_(6ZWs1VKYZKx11)%R~0P0Noz6CT4|fX7TipDvv*nDDyIM5!kMJF}wcM31Tkc(p6|IqLW;&`(Xxy?>|aI>zDU#|x_n5sR*uAA@=C?^c-+ zkJhEBIP_-W!iI3|!%am{YHq@|k!d#itL~lzs07Ecn3RU-TKE9N3n}_f!ekCV?L{u3Dk%BqW?i4{65-B$B9lm5=2px#{p;KxC zcHMDtQ8S}39@T36OGWNy1v`M`N_zddC z@Zv{alMK#8Pp`5c8p?Ow1q|6&Ot9_&)RcWeW}!v8zYi)xLvk5&q<(Y&1DPAVubHI)c1$aRikBJvA~GUrPX<#u5kq*M5`Co=7HF{Zu;Qiz53~R4ZdY% zsXh8oA$u%x&-RBUV;cv057nVAiKk`#dYe-un36>{M9a>OuH9RoG%@|^h0;4fEGXJ1 zOM-XykfJcbaoX6dHI$Y;KheWSjMig{x+)2so_(1J)d6?Cy=8Yd9!l%8kv(vL&v-l1 zEHrYN*g2zWc?1utpbT1q4)t*gQ-tB0cO5RS1sAMKjVjKTlTKCn) z$6srA;u|4CPN&S^MXi`TQU(#w*%Xg~WOV{V8NbnYQv(fU!-WPi$Afm!M|OKH>~U0` zhBYtg3U))4?od^_(WAt&lr08{C1VkM!2S+a7t-thT*>s%FhF*y`oo&X%0wn2z{j5A zdqLzE6H*x2a(l3k>r7ZLr$_$tDeZL4-ZeQj4txGt@DJ)Mq-V45rsi$!iKFLjO<}Ze zH&kv%q%>GeJGR3qFIv10A~SB*5+A#+92Zs6Dh-5OO5uQ;80KPkyLW_yimETQPgT>_ z0W|SXELDMrA1!o4wB;ZkEsNjvu~}w>`)L3_%Lo&4-7!&1{9nzdW#du$M!=^OVM>&nMvsGt{tTzYI$63h*3i2?xP$tTBx?$N^lJqYdO_u zk|oee=!%c4bD<}empT-9z(7W!J3nvIBeH%9Q2ble7VzslQ=I}c&NH_FFdIhXl*@|7 z(pabKT!S_mi=J&JQlK0mu7+}@(`0Pt5Zed@~q)bqfCWG};AE@6VJ z%fJ;-_5P*ht&!vON38;gpX~G}tw%ufXt_b2a|>4@nBaO)vr zgW*K4f?bFTz>&_8xgCcp= zku#Yzftd?Vmz8$z2?H5IbFJWR);~vn26;z`MFlTQn4tO9Gp6+R{5!jhM&EvC z;{dC`^UHCuPNak13XKGvz*z;f%37!HOFDq0vVaai0*K7Q}T)STk&>*^02UR{C9U-3{U!x^kC}xj~rv9M;=;^0T4w zXc=}%ReZ+CBG|+}DKXB|cd0>Sag1UNH}OJX*bI{&qEvrR3`@>_La09qj0?)_7H5@F0^YB0S6z&Q5;$TMQHWn&2kp zcIdz@`n}n$Qs~lQmTdP->-FD~o4j*gY>er>8@ftgG&Ref5#=fD>@zk3za+IUZ`=P1 zdfHza;Qxe#w>nubDXbUG*YkrK^OxXwtBz1Npsv-gclRAO-yX7ftV0P-nO&Naw5Nq%W$cY!rwoiHnp+w0$WX6@mt%WTAZr& zUek31!J;a`q;!^YtZQVHuzT)1Wk4gi?{Do@-ee>}(PzrT&MN=cS<2Fcx4v1T1auyg z1;vOR@EWU3xonWx6}H|a_L@sJ^94IsPvl|tCxn4QlYganWb{nMsY;nj<4T{(#L8-0 z{O)27D?7_?#J2ESnbu}#Gg1K^N_}jF3@E9z{CGQ4*5RL0iP7>C@0lMCR`QO@~0oK&L?G zK$pP9pKpCvzP&YJiPAUFc@@iLi?+TV*bb`c^C}y}WPkKv|KFjWqryg)(UgC#SXQEn z_du3vIu%@AQkI8N2=yEHhP3YgTVFEg@$LPSV9V*7dFX=6i#+&xgR{T{hx^w3TAEms z!}62d|G68n&F}ZRUS|Xtb+asixdQ(^KuL6S_FIyc!xq0X<|D5tfv0({ z2H^1R-;fUBB0dEi+#ld&6xD7!uXws+{lKr-|F1qCno3>lu`=c-JZn=mG%xxmP@xMn z$e7}-2{Xw7!`RDQYZ|1>ofYlBRDhmN*y}|(l*7(oP zNkz+$+iiVxP}fexjm>d^WGF16pOv3`&R=AOBQY~DjAOvr@b{R6J`eyPQpdDO*)@`3 zYT{5M7aMi_cr5B~ybAkJaM^bzIBv(1i25l20=Adc z?oh)P&gKj3H|=Ng7C>bi9t5J1-^G!$BkS3P5Gjjg#u{a@oVag;c3;`vXxHS2CnVG@ zl>20LK_DgwgDQ6BuNES8lSd&{z zGwS#V{P=Y#(ZOtQa&V* z)-*g^;P>o&Y_Lh$rLaLbM4q__7D}=4ovJ?WGqr!;ejk%IcSw1>Y&)E-h`6T^2fnt; zcjHYJ(ycLcjqSiJvTs`bl{l89tY*^fT-c9Vs&Cr1M#}NoA&S-xx)KC@nIm%3aJx@c zN;8gDtgKQy+M*_N_L*_HFV}jmgZk8!N@C7^IpC)VOL^0+5bVo{Z>I$sBz3UY_X~yWg1vyQ&nF9*7Re|}yYTMDU_{L@@bUZ2O zW%>MB?%FmOC2Z(zVKu~|V^ba5$eN>@zKsH0-`Ktj+$!Mf+R-RT4SU&_x@ZIMLLJtM zWQbS=?0N#LPvo7!b2W#LUv`_2mUDCdsr+M!R{U5W z#euBl#cWHND(oOn=)FdQ`4J8tf~nw>jOBIHclgqo=jDNp6OEl;V=d-Fhp~!xTHcKTVrsK;F3l5e;$5n|xPT z4z9-YUOJ4^dosn&V&(~?zUP7UOzSwgn_6e~`5m?zR$zz-{OW-~P-BQx=*3yNCAo9+ z3m#w}yY7ev&x!j@%9r?JJ!e9x^*xo%)vMSfVg=FQt=!h<7o9WuL8?6h>sp@&o=592 z^CVy}N;l#>DSDi6B{{$Wy?cM_`^-~F8+a^gEs{gfFh2-K)YdZ^56;-EQCrJe4i;Ld zRuiEH={K*L2rXO01bAb@cE52PF#EcHaZ5vu0fWIZ2PN70eSd$UQH5l+9iuv*%oF}1 zGv58nXA*R|Bnj@S%J?e$<+Sx-Z&FHk!<54QMGu`8t@5KQo5i5+)60*>f-ioW8vSV8 zG4-S;i#1_sC9 zpLm*WOUH0Ol(v{sV%M%TJll!TROx%E-R>4`67Oh|~W&ib;zGMr>s z08L|}EPSc-C)sj5D!TJ_yOaFF;k(xel z_SDAYv9}?wasbb#Sw_y~VHwBVphDmnaqI3##$Zxq=sfru%K^WED|-Q7^c} z1s`3sKu{ow2#U@eP-iiaSL8h*qy$&x&!H4Efx21A39P5iP;VLr74#9@Mu%%V`Y4K zutWpgR|k=XnO}P<7;ss|Ua-rLr2f*hJ&pQOE*B!vAUiojZVM8hP{8U+En9(+544xB z!Yf3i2@>DqyoM8Fi4pafoo7PlfK1?6AZNn+-|H8%D{MNwMsC#WzCmckZ;3Jk5X-yc zyt@j%9UnIP?p+n77o(mykw{$4TLW@l?H49$T`eAmQLfCaClwxsWL{^ve2V*kJ2D%k zLs{36A_TgqBzHspvbu9{OF)cG0Gv(2|3(Qe9_up}T zixbr$QbY%r$d?6UM&IMsvAySjgZ5<_dx0`lhLDM?AaP#~_>|48Wp14hN$qvVew#oE(vo4nvo+ z&iQC)^Bf7mBs^l_*c4?ucf#I{Yg-{Rv#O5=q7oo+%ZwzpDEAMO%ihhoo!GJoea%QlTCTf*}*q=2DrXV@{W+oIsuh( zetJh^a;7nk#!S=ydHVCVJtaWw+%9*(V3snMDS9~vmQK4uQtB@Tkeb8ZuJX`g%ydG_iUW7NtS^T8*HcdgRu z2f#N3%l_*9U-ve&n!4CUEs=6682yi5jTFPY9aa(o3_N~1P@wkjGu0VoO1dirLXW&g z;-BH4o2b+O`RS-9e1m@?cu5K|Ca>GO`wA?)zdfJiN+V4x2!c1y{Clw{XBjo9kFr0| zTJB0g-A*Kni^oCZKbHz2GECY!*I#PNGeWHLN0k3fKmOyW^&!sz89i2m;o?}6Bc}uY zKH@;&g5S9&btT_qXv~A^!UH3tqZ5JuXfZ|AmHn$G-WoyxT8VAZ`HEd%96Vw0pHt7R z^xzP_2vX%Ke#TSlewHS{DgbHM5Y$cR%e71UyN&O4u9yqNek;>SExfuA04q#4%2h!A z!^nLpgTu#AzzG&=NcQ7l{?dY4U!MFAt2go4zbJ6YPq{&M>8&ro| z#;=3Fjo<3wNcsVqY=$(ecrE?`h-uBy6zQ0_zajO9?73-e#IM~`4tPjylXZB4SxR7x zvC%*(>A}0dUbp;_@C}g!l~|=`nmP@2cN&Bp7k)F1JO|O+DINT6d^u{NkPxj>*wX8< zcD1EnP2KbS>l9F$Yg+t|soTnCz5%eiZd4y(>Ck}y*eS69T1j3y`3=IUC{W>o!o%R? z3(_Bo2Mg&F4~J@9GkT@g@x_1krhdqjE@_QT2<<$snFr-6f(^o?ufYF$ zbv>_SBZ^sN>uIrVjRJAUM0*YaH16=J0$}UUefRM&hpYRABl5I;d~;ALY}dw}7Xngl z*ErgL^j!-1l$#(&2VJ}jDt5>AF6wze;&0`ZFZ{0uM#h|n_CI{^Q1{P=_fEaLlflu} zc(K2EVaBlh6s0T8dBMb_G0$>~v5g#}R*SiQDRf9y302FtT+$)R9M69~2#S7EdmYfD zvAFXl4yh)q{iH$>g>C-@(y=0g|6D@n>NSz$v4&R>R;j!R#WCI1FihpM_Qelw4S(tj zC`mRoeRcAIm~(%Esjj57)+BlaJ+IQz2{&cFEhYvCK90BK+LT@iHrF^C!c3)&Bb7}% zb&sk0b^FXi_J4jbEFa@z<{K>RUcRBg0Dj)dK)C5>z$}{p3?=@mhKrlfBTM4rF?sWr zL;e`)>zL+(wGB*;94s~Gf^X8hHr3rpN5l>96X!`4>v@{|2gUaN6dS30R z^E;VM?mZC=-nP|`%{w9%(zD}!J=v|a4la$M&r#5@Hj&q$JHs|4gX+64M1)^xPVfQD z#eeo3#;Aho=h7uRN)TK}tSQ2hCxS4y)&42>M{bpd zk7Ah1P1?=vbD=y;kR2(-bbxqe$u1yiSIKsdumB1$?^G$lHJNlLAk=ckJCeriWP|qS z=Tqpyw+B0=Z*o|5UR9StVoTc7y~? z6Kqfk#et1wF{i_aV`jZtUzAqAj`TkB%l>$L_UJvbbAW?oi*>Ws5Pe9Ia*aVI{Pz|0<5m91m0Wl$DrIYHkB}HGoa{6 z9cHq?@>s-`i1U;YXM}ew)IC`u?egrTeP^b0(|sTie8pbHR_QnRnB**qE z=PpWWp@l9l4)++nyvlZVp`G*1s`rCP+jr0HrGb6 z?(LFkI(tL%3IG$q`8y6|K7+z=hpeE{b%E4iJ% z=UszN(vE~iqL529r{1#K?REBa>fqxw1y%aPFri(+ek z!=u#j`xm@%!YX)v(flM0^Uy>qNnDV}Zr$SG^`tCk7@w%%=QH#Pj$Pfv=1{*)<-x2q zN!J|_yTwM+#FQX!Tvw8^nhekox%d`pA|MHA+&rfQx3j79d1mDB-rB6Q{#Gb!vwf=?l(m@mFi_00%-H?@Bu(7n*Q-JE6ectTmvvCdB!``haki-ReU zOvxk_V;R9s&8LQAMj%7f-hf^}JbaguyD+#+bZwaK9AeqFh2!yQnKKWy<5QhXo3FBA z^e<2hj{yTSM(lmEE4Q>X>r6=f%Qi9-%;Zr)3j}29)!AODA?Ag-OqL+Bb$`E*WSYZT z6u9dLD!mI_5(}K+EZ(ZF&HE_6;87vEUquShk0&fEBsAGV{h2oq@B6X&WmLS>y4`1;i~@F>vHsI7G>fDR}G_Z zEPQsB0g9{|_ck*PmeoU0QXtb5t_2Y5 zmJAE|3hQN}ydcbbrIv!apZX)mi4u_gvz^7`^MphY380_P_PRlRDvd1`li75N9htP5_`096F@Gdt7A1 zU418AHKgO%5M<760={z?xlGi^ifQyN>IIqgEALq@Gn{Tt3Wz~__Q2&lzAH7v`0oyU z;m~9yvdro0$|N{A+14dd^O_U-w*5|m zC(+H983^m4*Dj`s|%^2t31Y=Ag|2{$b@P2xa) zd5x$~wjT^XI#nMEAg#!C0=Fku|FW2eSr)TDhpV{a%pl%eHtVGGy29BV8}5%THu5~H zuR+&Br;R6Bxks<66>%5E_XamCy1utdE@qH4(lv}HrP3|PIQ(TzP)M-$aIOmmL z@L85We~>hk5?~}s7>-;6ZXpu*?+@_PVH&YY=aSc2Gb|TgyMBxH&rY3A_OOdNyv$+D z8X5=Q=&@$4W&dHUuYhP2N!2)!*>}`RK)+It6iY{vzi(&MqTH&e^+LH(EC#PL)x57!G#n`%GIW9JLZFy1_ z*nm2{lvp}kPdRjEW`{4aBexgan>e%IBM4{?j1I4PoPcP)k{e7&9OGh5F~~G`Ru*gN z^RL0sZ}-fBw4RQ?lV3Ub>NNXs`pCISn78(ie{@8OPEI6XfrpP6Oua ziiLKFRK|@Pk}fU8B#a15CT(rY@$oO($stQHZ%2flWMiLxUZOSV5UR-5uZ6ZS^HKYf z=^VccT=fGjwD4*6iHk~hGkq+ms~L)8>){W}R#jdrtYxsCPJj$=kE54vJfMoy?e#Xe ze%ov(lU5%u4{sdu#8+3@5=tqs@VzVaLI0&LX%pl0yA@u=9iQ$`6S=dI(&5{-o|?V6 zO7WRugM*}(hF)0jQ@JStFMj*E&#olNMx1=byR2Sn!~ycIQhzUPpY<17gHmNMDGSBU zlX^G>e1<9NX@;2lli1Qowp2*`lv$H4-1-MAUue zn&kzajj^y%c2+IGpEr<8wP{gerNJLkvD#Czoq`q%tkox;@Iqv7QEvhVE2@R?q+q3EP&iBTbnk;vyu}SjWPy?;CQIk;2|168*NP?12Ft!k8*J5 zjpjOs?Ba7)38J5BiwUtm1U9cI82o-=0YBT5_$(EgBXq7cfom0;n&Mf=2>DGdtFqZZ z^MXAcuhH0(_{wY3-L8~)idXm-$MVcAhUHPESEh5ZsY(nOMd)OXHppZb3# z?EM#@m;VJE&Htt*T_5#D`wUg#)&iJo%kf#GOd1=p6Lx{(Tt_H+p|$Ei9(*-XYx*|# z5IC|@2Kh0`WwwSS=SWreR4uE}z7iyOi9JZZRQ-8(xs z2M(~YeD>3^AT7_YP9#jdlDk&e)2xjObmhLXv}Uh{^-Z%-D3OFY;;<77ns47hCw|tt zQq7qAvR4iDg55s~aGH7IdBLgLSM-W}?cigUWA&yyRhl3ueKdL`v?V8QsPAa|V+ukZ zx~FbQ;GL+)G$03C{g*x0wO{q2e0ze zTJ?qDf-@;}&Pes9P1K1~%u?=m)FZA{PjrZe{Cf?~btcnIft00OFl$#eYYW@GAa23# zkIZ|IsNvjBV{BmKdRI&v^LoTy`0&zgrvfPrkBEE~0!tjT??gz%XFYVxM?na-V^sx0 z)2%5Ez$Yt>X$ZI5!F47+xHe^P{0OmLF!;s<;SGr5a+~#eYV}16$hl~qDI&xwS)K-Z z@W`985|Zw{L_vgZ6g+zQ)pNh_<4mpF?M4}Au#*H>ep;EN75ZT}+5;#(52NVNqts0- z-b|}1@)B(<&!4VG3e$aDxQhye7;0e8H4SjOXsQDcrdy_UoDVQ(I~DGa@fRJg zmbQVAp?8=B2H(2pnNFVshtlOK^8*JGPEr)hE&>z-xO?jD%Kp62^O@eDRGdp!DXI0j zueU`U!D^pT;J&cib%Q%6TZ- zx|B@yKx#w*mwZa5IGy=h`pbtqHytDCIMV1S*z#)aBz!{Qtc_T8$^sh^=&CHeF1$?k z!3RYPT823JB$Ce@gar{2lVXx{^V7t8Q?1}v{V{O&Ny`i$2Zv7Y=)f^c zq@XAz=PlHx{FKJ#H;%jLr&xzj8?bkx=eE62-dPwmkXEXi^jdq~%f*QUXluH7uvh7# z51gWYksG$e+A}j63d|58wA2dBvN`!yrOSTJF#i&EM=&nc`x*|U>Dan((#>3gbX-C^rB3tw+^?qSthOmayf*@PHz zMCb&CBV{eqRyyAV2gTZ*@7Y_j&o6gvfzJXiib;O0y^&VD^pj5R|11FS^OsatWM-~J zIoJ<+ll%g+_o|?ZW+Z5hzIu{z^2AbsTNrl09X}zkS(iO5)i(9YPc+37bh4zcDPRa{ zUwHcKiS7Zh_&tp;doc%*BK^yAuGG2Hbw0OSz+`(|sOmC;*c3X= zFa!h#G6gSgFNq*cmcf2=tE0K9S%Td;H|z_GLSLx{&8UxieI>H72+nH|;440s46J0) zW*S(G;r*m8IYA1H&V0xnbm@mF-fZjMhbXG{x%{2Z_Iy=sjF}J^`S4RbJ7bTBl`(JNtN%DO9)Y-!yl+WiTI=rAm>lQ-M-$ja?ZqASW%;KR)2~YCMR#+ zYdk0}D5r6OniD5Mi*gZgnmMZX8uT-?D_o>xhWH4KdXg|Q0`T9P#TNB$6Q(yRXH8dVC{mvl>O=3PE~Dt6e^}4 z2(DceYuml%N{vb;`BwQkk!S|&KZtMTAh<05-M)0Ujh~3N_W_xW9~P9jdsFP%)4mj6 zRSwrPGi*5vzD8 zkr*NolBZcZZRaDH>MKJ$4?J&l1SDyzFq}1ut0UI64JBtbzCY<8$8PWx z{)4gRir`jEXu`@CJ|x&YA5edax@{u7C{Z&6D`G_8=Wv;4;ypkTvP;~*A% zbp$P*b=}D)YZ=b%JI3LDHZt$VD}H>GU}u7Dt}`^*OHDhDym2(xx_8ZM|KRg$zE!ER z7VgJ1oMuAw;*dQ)@|SV1`Rm~pQPRF;$R$I6lVcz4E*NSim6f?C54+u*v$O2ga!g>n zId_^;Y|9LJx0Y#n_H16NH-#paxvBE5eAB-mBlr{g4nIKRd+@eNJ3?fx;T7|l5OJrG zJMq1uLk`Od=+@SCr>mO$IUHz19`#(5wNVC6b|*XUww}QRy|k5>4Wh2HGQZ=tu1{`Z z+}D6}P`5Y4df4p#!JXaiOE$e)PYPQj7+{~Sk9A8d_WD`Wb9%0+4*)>~5_{*04s-V5 z(KTids?#o2lb2cbIAx4_`^+UMGin6&pnTa5f|1W#R`SVLUUVWn*n5c+ScQurs1^XLCj)YJB{Fjh$18 zZ(>Zp^?l@1m*1EA17ah&NU)C6M!sgvk4|Tk`ok7RTx&2dyTaQV&p1_cI`sA-c@(C0 z?7Fzm4zx!sPKJmrq3qBpk0r(4Sh>#Xn+Ld;uEaAyY$6^O9g7M&8{j#(7?qIjUd68G%iAbp-W%mSr&pOV z$%<|e`7~NqO&>(0G1ISr;-6@AhPhIDLJlVKv!Zcqzm@^3PCnNl2(!oYXI?JIQ;$~R zBo)=~>j-ts!j$8%6vopL+XTl^J_z#;H#c<$(hZpU5-Ev1M zQS-^W1%@x=3wSg$`;jtQ=m8oWYvPRZ1G)AFuqb}Yx|z0V`o1t)$@Qi_)61SpC|E1yRG6x1`i>izth?9sN-DonNH0AmDYd1QEq zn&%kW*4+#(()%_f8E7p1S4f5{pFp)7r;hg|6&HNRG#OC)@;?+;0X?-Q+G4 zl)8I~f24dku&At-_Y6jnIxPz$cDxXbXKk;YEahn~tbo;e>eE{OLv!MX=i1=r)&Z5s z>fyS;SIop0=2u&Zt?IL?lm#&y&*s=o?#ep#S7(6j-Joy%LZD9d7BzfV)7e<>PrfNX zb3`0VZte+P+xVhjP*Ww#s;*=@+}EMx<#qCBn4b(Ng&BmL`Gd7dq>BVOkS{j2n$10Dh_AIssgv#*-n3|_^(QcE4K}!ij!rJiSKhM zEv|Si4slxR=H_PZ`qobc9Q75V zJ5YE5qP8v@&?vnusjm3LT|ZUK3pLr3>U)R3?fO_x8vWgMxIaH~Xu-dj09)%-WbQTFIWoF%%q>i5 zN`7$$9XyGRoe6wgnCP*%m-&?E3eiY|U9Jo!j=%r1s{7^z;)fE`tTVN5Z}HbvBwoWY zJ4+G0+j7;CzoJHuj5Ufi_qQwD(@Rl_K0(=)VTe2u+7I^eud`SyH7q; zW-9LcMeUFVmlpFgaIT#zFUVwv2-#-RMxzwYW?xB9PKN=hFKle0u}>^zS`xOhU;^M` zW*D&9(5MoYaX%~KZldy~?XahN$v4RKtm;u}Q8C6MF;zqkUcoTTsQ1kwQ6T`k@Tjk)DCPJE zvFW~ty;Pp}E8bfGFFaA02F-Bj<={C6P-Fp(dlhbB`!3m35grPg#DRo7BN2!sN8gOF zNy{Q7w~}x-ap6hoicD4U<4lnAa)w4aYo`^e>vOmpP3g9^omq6e&X0&}Z)}^99>w92m2zi`iC$MWlS%Uy=Ns)gPPM-V@kp*ry34d3skJDb0!Ep^w!h{D zBd)siT}954;%Xao{Xe}6H>^1Rm5MG?tF#>x4UMYGd0mPnaC zMtZ%0Pa7U)^geYmJEv?tQ>Gt^Sh*^q3P3!VVS3X8GOZwkv8ipUH_h{1?ik&3xJr;# z;TWjW(ZMu8w^VYSRX72@C(fOvtO@REjfJOz!R4_WRyEhvV**(&P13PiR66maln~*( zbGr~L{&b#vx2K0zO)q;gS?6G`1}srk)i}L!`%tZ#;aH`BFc-K4)_e74Z50{Jssa6u zw9i+WfEmzFL=)eKjpE=1O1mgsY7T=r3f1hzn51!1J}5{Kv{TI+4qHJTl=C~L-Wg>` z`Mv&A?vSML`?r3Nk>3wKyY(${v1RiDgjv(rtS(;pd?CS)I1Qh4vuxIjSxFZt8|$Qk zc5Cm`4U1go7FnBsnU4E%RCTV^Md+rm^pYOP$wPJ0bBDlwxZWV_Lvz6g;DK|@#}?XH zkT>B;1%Rk9=^f=fA!nU+!P^v}cp3h|nt3tv*w|(5UejV?0r&Y)?hp~Q2``L9nEF&}k;66? z-4gjF^;9iZ@QuFjL$TiXy#rtGV&#nBn&!pVxlSeNybP2G?|cj?4uNkzJQg&R6P0f+ zfFC+L=Bo3xsaX&l-&V@30xzd~V8kwFlWuI&)9`%7n@LR1q~yqe;#fwg*h*{q!Q246wCyow5wTV#z>=oP`PJN+YFZG7B& zx))BZ3v-&6!A7SRmj|i0k}Xs;$50Ih!TAEd*Nx5ZBJO@h5eCwPryC3uRlpHOwX!T7 zAZ8+BswbXkfIVsRh?VP^J+2k{lmqv9S`zlom$8(|k;4_S{e9BD{=t=KBHr4Q!6&so zV}#*I1?>So3YtSBw7oCt8Pb-om2SO|Tzqa-h~Wx*>`FDKAh4^rnY)lwUR09|CjJ^p zQEtk0ff4c;1Rfvscj%pdPs6pm4~|Vtb&z*T2v;ZmL0`GtS~LiJUE$1_p+3mJ;Z%*g zsVQrCa}KTj(&4O0Ml(LKqv4WI^qwv)7^)Qi?rWvKuJs1nJ@(gwIk-Z>tqGCEy>NdaxlZM`q z6>?=<5joxMry{*R3B+0Yzb=-PS|2ShN}utPd|$5MPTgX-mQ;QrdaU?=<8qMmp1zMi z_@{6pydT6r*tUi1ECeJ^nUtWtgose&e2TigBR4L%x&IM(${o?<;BMS}+jf5nmcCU| zBA%7})YRl>Qj~b^Xue@qgdXLKrZ-O;OC7#GBOmp(- z;h~?xir0MzbQs1&VIA`$z$l-w)v2O`_dIU{@Y@d*K|k`?BUmsRyLG|H6BXxOi+&9ZvmBe>d=iY@pRXq)?i-1oQ%Glc}e}zPo@Y*aVB;_1M zHePEjmVw-V^P!NJU|2Cw;j}04|kg^aL)bMCJS@-2Md=NbQ-E|C<@dQAY<Gv z5J5z0AW4Emd_`|eef@Ii{nH*Cu`SaZS_e&%qcrw4O>p2IQDsSCvk{vRRke_rITys!fd73-~ z92Px@w%VLEev0JO{lt@c&<3~kgg^IC`e&7)pZDwuvx^suTzHvIKZ)wi+)}%6t@m(i zlps!~b)xQS_&BlAx-ts=LAZtzJYeMKn}aux-HaV^DwfzBK3>qo^YNt6tcf7`{g0qt z=f*BV9Mt9<7ZBNs3x#))Iq650=y!HDriG!1qOmmxo2D1@`V*5SO6W`(+v96IMcjo$ zCqLT(-m^0*-C3C#tr`SWNAdVK#3NxvuUX4}mf<~i$fxdHVH_qdtWSC*7QQV!+v)hJHN@{7`b`sk#JhnQ} z>-c7mMORLT{u@a!I^}hOD=rkfLsNu8*$}ffI*b}T`n1kUf6ir}=}RSBC%)D=PR+Po@hShAWiGW61eYfyzqFfv;hxq(ty(s zj(Njwd(~($Q=&1~L$00J@JL1~k$=m<7ms8EqPw>=djr}P_by#kNc|W)#Nj?pMd}{i z?S-9CpY0RaXx*IZ|FoE^Qrj5ZaEYI^Yb_Yl9j#chT#B?I#T$%ROXg5%qvVD++ZOjL zPDp%`!~Z5`eR6CcYGeuJ5=s>&oc8p$nQ$cY*hTQFa9B zzLl~wTzR1%5L%%4wr4l1YD>%P3V@CXi(Q1odB)f~S?ku}-5y*i@7VHKc58&*2lp^x z+MiF_05#<0DbpsSoq<_P=nlJy;sVgUY;@MHoU&5m89?sI16Z_nQ#N0Y2tCjg$dA`* zjNQWhVEJmaDrRnV{fuGL#l2HTnQbPgNA35XR@VzH*r|hGw2Oph??~THB=GD+?}IMY zdd72LgsB(h=PvZj#u}4-GD)4^6y=?8Uur#3$y1k^SsJWq6 z->ZhVKe;wuB%u-m$Pz<-Z8WjdL8yw^r)tHyyO0j;3{#~E+sPLXXb!E-#**qf#)z+? z6k1T*o109=b-l++`bhsmK@&u$Kft!?sA!2O?&s~P`nDC5| zd_kbz-l>_Ds_C!bx9t;-UHog3zA5_4ym94?Iqq3fs1hdkTbz(GpW9(1tGTE#37}my z73m9S@4D^(gRXf}a`9y`!^*k`cSRkP!(e<0?J(NuZ)gzgJEZXlALG6-6TQ$rA(b_+ zq2<*;?v&)rP*~4}X*V?y79?F-74S17Vs-_+%BC3|bi+<3rI-&|i5#0$R#fOdfXlY_ zD%q#-A6V;it*)7`Yv&l8bBjKQp1$BLyUXdn3kz=@iW54&&+qG&qiya5KYdWG}Kv)$v#bV zc`(!NAu%C6B8LMG{x20iy%*S z$fgm!6@5O{${lIFa1)6nuSx%oz;1Cf8;6~A&PKM(()ywvl4D7RdyT#16WVll7wwag zn9}7gVbad(ddXu=o@I&FZYDsA-@RX|16gIM*p(6E8^}}R>20O480;s`o#>8rp)@52 z(XUkb8Eskj$@tu_DXvTy{O7OoTH!BA2=kGo7J`u-DPomkd{Z4=07!BKuNng)F6H)` zx)D}xioCIld`-Ev7*%8;cx~OZ3y_NN_n9RPgEYs~!!|eUb zmpR_o)_35b8)>`PDgN3q7=Cgu!U|2%7!pSw&d1)`Ui)&z?;NS~z1f+xWZ4s^ z{=BDjEk5GtW;LgkyFu^L@9%XC)oSdj0_}W#-Tkw~J+^9Js?Cj-`or=)Jm#aORJUov zUmF*0wcH)Ly&EGfD+w($@S6qB72EsI-AjvU#0c1pzwb^$r&=own*Dt9R;YZHcF?dA zA)cHUX=g_O5W-#6hOGow%*nM<{Fp{>7GrFdak^Ooresb+_p z?Ou-bc&Sl zU{r0~rjT|a8>#A;FmC*neJB{)YH+6~?nd)zjFn9kXU-6wV7h;CvIIJObvE37T`B?y z&~Z8Qfct!1WsXCQEeT&)0E9zdTi68ZM)+w+ye$4=(Hybgrgf8kR8Yje!*&lN8nrj= zWUcgt<7JIP@%#VsEbUi)VBY^!^*67`8)rooi z?h%t=9G|Cfyb?1MiDlIgYD-{v!d|gF@z^2tw5|-#Oli-&!`la$A(lTK^lLDRo%Hk- zHZp6yr>#eFK`i0XArbUJT&}lk9qmqWYNp~lc+O(J1_};&nM|sW2=|x49z(4T5Z_y- zKE{IKM@Juw+DdoXx1?)80(FuM)W+9vL^ zDaI2=bN7us`f~|iT$-=G&s%qKF}>IvM^g^)Mc46s=RCsV?w!1B*qjts+8aI+*b|oV zZk~nrWUBUaI(WZrL6w2%u1a0*g^Q10RZf~NDVW5*;L}qIYu?=H+lL<`dVelI<&(6h zCyuuNvcKlMEVzU}UEV!=bjYOf)SR)Z`NU-8rl;z(vp=^eI~e**&uw1$go3LMMZixx!aSz(@%qqGhsx}?RLKkz z?GO39+P1zTbtvNc5q0-cN2)czkEmufJ*nqDN@e)obT1d!>YLwDI6(saoy!^nftv!HuHk&{R|&>=SD(DNjdZ$SrcQSxR{9Jse4+K|!W4t7 zg-LN&I$!js*i_i(8NN@5SSWo;F&W+Eq1Xz+*Z&l;w|%9Y=3-}|7kh1bs%46ubCLI^ zqy#qX{1ZLq7AWJh61|CV(B1R!0)68cfQ$b{K}_6_yeW zkHL>~YGzdHNJ&djas^IwQQqZB^9j;I|3w4Ga*Kuo35gstMW3@pM8J9YEH3D$&xDQi zPfa(<;&O+AlW%&ssUN^rc}mQ$E}MX-b9;j4^eZybzhFwiCj^3@Wp-bDHA^tFSj&<@ z;fqnHq1sd0uAa($+O-&)ByPc$shOlniEVxyV}rb-5Nk12k*j!0BSk899A){i`-_J~m#sx(8n65z6n6z16Yd5}^u)mQmT}lWESh0s zrqOBP2KzNlKcBGDqz2trQKy-hr~UQ_a=F4DyRzNo45>OAQk%EC-nq?=@vb(Ys}K+r zlU-F>2vkNa`0jn7qrUmD!2%TJ$qFq7!2mq@r){UdG39e404(s4kh9B=WeV52m5Q3-5;Koqv&+4*o^^ z3jF>q>g?0ovs-!T4qEPJuaz~U$nn1R*bnSG=cRYDGE0Vfa@F(ashgF?%|8du8z_yo zl|h2!k2v(V+eSm>QWLiL8vc$jGfoq2_u1;@VXmo5_#~WP09>!ecJfOWecN}RhfH5v zHfDsGBOa%C!c_9BGCAx8=U(I)Q^m9!Esazs+Ou7O^9|QZ0j>C=F9&AD7bAuQTw;29 znrdX53U1WB<2+zArCl7~FP?LLSnJ@A2p>mnW zrEBqjWbMV3Tn&KAO!zJTVtVBEF6Wg>!SdAccr_K0Qr{!mo}FQ=EfJ2mFxsbu7|)N) z(AguKd{1AnL;T#O!GHT8d)tQ0*0!PPj*wo8XiEQg;{D6ir!nUy&gLZ)OgelS-oG>K zc3C^{dL$XS1&mz-kKHwm$kgsJa$k_;TsS;%B&n&5+Io?qb717dJR>_@Dlp&i{aG0_ zc&;U}DN58F%<)xT4n6_(J1p>nmS0QnP_pRP?V8umM=pqOF?Tj6S;;7l%f;_$#<_LR zBs77li!PznBRhhmz-YIKrB(TY-2nUuxxx zwjqr_+qq{7rk%3dqeGU1`Yc7QP?m(NQo*YRwwNPMt$Re*LWR9$4vI|auBAP18?sxf zYoZkPzScRr4HG2Or(rLIA0ZwH4+jK^;|t34y|4>rP3*aHTKg)Ln%4Vuv$mUh$J3syHjlj$7DvU%3uUGTY+=WM$Ly)5IL$K|!I+ZJ~wC$yMF=9*3vDo(uE#lHKCuj^W5=)wYM@k`46%H(*40QD2` z9U%IXK2)4KuY6YWU4dCPGQSj>a;f*`b0mXpao|Fw1*zdlR#>5V+#Ov(+e;)^iwQvJ zD?i8X&)}7H`D^oN=VR?X!*;V)+o_=|(z&m-;!a(aUwOnmqUhu9@;m}U&0T3~4FX5Znj74zgc3sd%I}x*X=-YK2JAS56Ub9!q^@zp9N>`o|>GyQ%4(C!I3{NdG1#$dxV|kc7xtHKXykUr61E<2?s4m+v8@gog)2|xBEprjw>Zt!iWLB zP>1R0dV@dI>GTiLR7a?98AMJ^#f6(<>AXv(gvalRujr@oZ@h?XfLl<<@j7L2G_*^n|(l z#V%-Wx&AEf)kP13H)u=M^_Sn2!)&249Hf6&^IPkuxa-lKQI?xB-}ek?L8d%uPk|Ez zhVeEoDr9ZYl$F+smmE`r{bKkS-GaD_5>@EBoQe%}JL0@(8@1xKdEjHX1*^;g>-XM*7!h6o?myUhj=YLW*auoQVma_v}?=zT?pF%$5rNKPd{{-odt zMt9`oOkHBa5D;u&!<%b;KCD)rhdZ1=}WB*p9lg{oFO0ch? zipZ{5(qzPi3)>ItjrNql4p}$Sa=_1#(iN=RTrc$eD%SS-PJM!|x97YGT{S~*u!$#a zoNnq5ZDvk2{{pZyr^xa^JLb*1V@@5#X*zaV7kyv*Cmoc!#_BPc{yj7FwihVft`WPT478QAC~)kO>FS}-1bzF5r$~rfHir>mr;7rZ<~|V}an}{}SKcpmeWu*| zB9%39%bjpY3mUDYuLZ>2Q78wpNQPcDrm;4Zg)A7-)dM(yW4pBUh?%$DXjy#9D9$Su zJ=WS9?{f+ckJ{OFLOz;l$}Zdq8SLTfP9aA zzdiwk;(vVo9bEb35pW**)a3sv+VX!XB>&qcd(YI9Brcmt_7!Zb)xxPJ|BlZ*pmX!( zLfoGnaYHrk=}1Q4xBG!B!PZF}?8V-I3%}?cy6x-xdBn(d#wOB`fcvJ=#W_ zYYpm}>kPtONN1@4M*^xpbZC9aBuwzj)em_mYkj(QLl)aOKFbsM+FM`GIKRAl=L4V1 z`iBmAH0NXNz@32y1CIt$2GR$z7%ezAK+;z}HIE@l2SlHk0{ZA{nAXcs+C}GAUJukf zu?63u8fUf!)Y@_!wm3>VDmm&pS~xn1TXc78(D%#T9ZHNy_%DRbJAgdY=uFDO-zbgq zc2+aExp#9NbDeYV=ZIg=Qa?XEi~3gSIDMyno9-sc$C?yI`OmJH;D*9&#f6H0e=+Z3 z-1OgBT3bS}eW6x>8kS{G#C4D94}p_UOX8pXgHbs#a9?-;KyifVL5(emC$WJ5d~`qV zS$#qL-5S(y*X#eCY&rAxX_~YuE$=Zv$aH%C`~AD}7n?zIf9HBW?EFmoQ-yf!ykU5@ z_c!TR82*|!_Q^l2lMkBz=zk?Ob%GBjQ-AskJOcbEX*$xKRaam@`son_S!MoDyVHx* z;;qX8B#E`7|KI$Sw6Y>KiyF|sF*3`1^h2T7jv4+97YR*!O#3*ywDdy?5lBAyzo?R> ztv!$aSI!+#KGedxF_(S-6Qas~;D$SI%=cPDm~15c(}gJgHXLh4^#or zHfI5fiP+rS+`Pf}f%PtMyHan66S`J_Q5mFw*#CR{3uKa7MnNX~&yxddXje=%qjj zsdBZ~+JF6*PT0+{*L}@ldWGXTtdE$a-K>vvsOHeq=;}D&8U7d2j@ zZ4oq-KRi_JI{jbSBO2i-2*6RD281wv)Q`Ij-}(_s2L$6b90CBWZp4Sbw77s77a{If zY5325d&K@XX~6%1DN`J*No}~~F&9={5OvWtfIK*r$tn?*xCi@6dQ%iXu{Uyj>SCQ0 z@;$MRqb5eZZGRnZ1IQ`FYijhxuF2^a$)2hRoaR}-R^zirvHS$1m4|ji?yRZhnnGHm zQvN~wevKO6;(rZ;bE== z>e0$4F#&hiqgA$dp@B%1dm*;2RbX>7cR%K0WSdg2c?9b4^jf~MZ=pR(k)BU0Wi(VD ze{1sazE`kFA^SqYh7siOXyZ2M?eBem3mI~S>g}P8%?WROJmwr6>-X@c_+~+pjqi|Y z<-J|3uiZX?jWBOXslqNN7?}j*-qb+{9$m{}kv7=Yj!`K%yU_#Aq5*G7-x2!$T-`bA z7L&cK{gBxxW+@XQ@SPZSujLAEG>z0lDH)5igIcf3Rd{tCk>fQD+EeK;?)h;`wqm~VxYUZ8Ce`R{ z#g;LZp~zWT)2{Kvx!9G2)YkHI1H?+nFCCdn=L!yjQA!Bvs-)s#P^rKMob4~2#hqO` zHgHX}yLehts2p8}WN0ooZfEx%F4p+|IO?4^A*ZQJ>W_WL+}e0ZosQ~B6Pjb;6#ptU za;s$|)NL{anU6wW*gmHrLw3LqC}^76$fNul$7xC@&tL_{F9uZ>nY`{~E%73ybB1BS zJ2$461qpi7`8#w+?8zVB#@b9sQP|`F+9I zl%|vW+S!vTYiuiMw3VcdT<>rjIl>ao4Wd?5XV+G=a-Z9^weN~HE3f3)MBpZ@U%)(> zu{osZVdLs?jm0A%br2%U^(S2>jiS0ZHO4l}kUb4ZdV5~XTxKMcz4E{L!+6A}9zB`W z)~c4_-?A@2;GT=B`BBI(caZUFF^(}QdCH5kPEXZQhX$ewl?*n<16^dmQr}OTik$~; zs)AhzW=I)1j9XhQhUXgzb-Zcct9k3ze-x$u{u)3d4R;N{@(q3jTu*i;a8Lgz{Ha4o z;*VedJ;?X}On35s@EGg+LjZc(wefFrf9UX@2)}>PvwpD~`C+R5!zlXyfbsdiB*_mK zNew7q-JeG5&gri8?cRE5i^_&!87^?caOlbx4l3I=pzPw<7CWDWL{7fpfi^{=Puc7+L6J$ReM;>87p{nWOL?Te;w zo|eA??gB_u;wOOc1e*mJl}&o}Gm8bn1&94G(NE&WDKw6P7$6e(WF(=9!ueG!zNmAl zg|KLP%J)kYP=qIXK%?nB2ljFwq+uLjL?>?gc1Gqmz@ruS^?&gO(47HSM>eC7q+jQ4Qud?)GVkrIn~8=;K6UzXO#3 z#0$hbTDKMztX`)dSgyM6ES8`@hHqV^iUe;Tiv5MYk=o|vA%RcMENy=;bBgp;jsC5{ z_ay+U&{H7?>6<_D%5RS|A|lvaIVmOVPsY|eY~N>dXw zwuw7%s(x44^_#LaULJFcqVZyIQns{!=P9l!S~Z5ON;9VbYn9bj6ZfGqsw)B)ZRA>u z0cpbnR~J9*kTLx7hvIA@?T%Afi*I+yeZ*$t8&fH!Zc4ayh9MrRC-&jjZ>TC@AhCX) zk<1b3ew`iDng2DnZX(Dvl2zj}tG^P}XE5FfD?oaR9&@`i7k4QRGHK~%3lV^v?Z;s~ zH$4B2(}EQrTb>~lh}z#%Ef}jDIJ}LM2PltfBRNWS(3TAgoGzlNC$q)TW9&~jc)PZZ zym4ne_oHF$;+tc4kN)*e`>!@y1-1dY6P&h>XNAY-vS-#vrFKD0%oa>;#JHqy1bO4a zBd&CdPiOn|1u{!MhcmyS)>ov2n91yqAAg*AeL9nBVk3{6Rr*B93=s9_(?)cQ%t&9; zLSH9BFuQb>VCCBdLMnKW>$}Fm-Si5E5zv7{)-})t_gvu;Ei|;{OB6Sk!*1T2ES0}@ z4A0}V1g(M3?Q0p^OFCpnGW9qLa&p%wFS^ej?CmI-HoZYqp68eiyP z7@nTf`9;7Y^ZN~XK5)koBf;&m?f;B`IL)EHR|r#q2oq&$99j?sd*d1ZT>A8Qa@)Me zpneG0HuOsSPnXPk3=(#wk=};hZt!h?_Van!7{w5|Q!S6HkH674aiTRlJ#F=EuJQ1f zgnHwj=hGVf{hpf28rJHa*tBcgd!=4A2EsXKS22v) zBGVGnxKKkV^Igs-1T3WKic;B26CA&^Gil|0O(KN3nW+G0hc~;mw8+;W(WPO86`FT% zDXTI+fYC_{t!VY?d8@wzZ`3JLSfFThiiSW&L;FOYuCN+SwjxxDRSXX|Ds&z>uM2K1 z^x)UE@@+h=OhNmj+K}bpQL%>ZutT0ED`%QBMG_RO-OccdLVTRI`}&04?E6=7c?Zmv zMgK+t1R&yiQH#C9l`?B`-qgce0n!BVWrZe4;egmK0c9~Z7Kln5vv z8?>mLMdOx~npz3r8@Tgm_ZA0vyB4Is_K@#+sW7n_b4`@@D9X~1OUGTHx(ixXQNpj4 zhS>vkm8Lm5ehJ`BVF;%d#q*XkK>MgYy8jQyp*WlxT zL>LCb7C}>eO8|{w`^2VXQMBmdE0|%1YxSf__Y+vOO=|RFZ93sorBiUJE14V+TQFLc zztrcl0oJ4mX1345_j+zNEk!y-R&}Q-1K!9KFQHg}PoA;zcn`2GLBbc}nu|R7!Pu6t zV>~u~Ix$p`3$7{oP|cWSf@QmN4EM5HRA*QF;<&@J_51}tiZIkbFk+)hmwirXK*qxe zaQSCVTSd+q0~R9gqt#KeY5;8uJj2>ZU>`FvBmIe!^r?{f6p0o%XuN}PE1iT+F3yF5 zmPKVc4doF#SLgq!l%X4ThC+sj@e>(Ma>+SlOZw@_0etH{uwZHav-Fq#-Hb@5y)5NXUz3RWa|WD@ z4bR;@pc^=L?&^yxLJQOdOVgMZo(yY#A%(U&U@Ef5E?nQ3#OdWY!fzZi+`ZW z|GRV&^>^g_zkOeYe%!57{@bIusqHf9+Ux({1^rhBg*Qtqm2Ao^576+9u1@_7B@nGa z{@@^wJrLf~x<2!WTGzh#%IQGPr>>;7AZVJ7M$uS2FMO46GD2iHai()O)}>i-qJqR_ zIIeYU_vD7Xysq|M1Z|BH{h0vIp?afN)=jfel^ouv@M%N32Ff5yqnc_X5j8Y!J%kNA zR#?%=F(hXYCI%Z;%_)TI^SB}kcl{dYh#GYp9NwZRtY#l3>MQIMSmr|^Xt2xq!cBH7F$;%p_$~DT8M2gZZ z{u`q)cTBoY=RE_W@WAX1=Qm)_mTU!1D8uXmE_0AGd*||x5u`km2)UpM4`027qF^^R zu!ZUph%im`xzkQ0%S7&-q`Sf;d}{z(r?{TLx(Wv*!M>FgViA@EX}M+Le5`zXXZ@Q> z43W{jrW3mSBD)tQ?-}HMIora2srxfq|Crr@**T0wccPbrVQLqQxZ>`rqjIg<%Y?bF zOc;zI@KP?Z9dIV-*a(s3)EE4uEzXAA`)WdeHzJU$XS5_l5USX+NbYcC)JzgLa~VEo zAAzDx3kb9|NSiW!dDy=Hk$23B{i}uO10n3t@CaFp2yzA$rWBMjM8$5H>kBQqlLCkh zlgRmUH7X;+7vH?*J5YhwwC~UF_P#C%)}%E>r+zLwZ}V3vc&T1kC+2SB=GGzwbe|wr zlR8c2>K_M0c?rHn`ZU8HBz*b?EEr!)U*#k*IFSPS56dPOp+Pqbsos-+#nD{@R@%X&en|nK_?Ixwb_s+m#m($JuKve$0c1*kwtkY_+@gDwD!Vu zN;fxh+0PO}mNPet<3re2OywB?m60VshJ$+&L~4p1Gf5sCth_Y7@L5X=-+1gw7XOde zYVIFq3Dvb@!;4coSzSSa-4pwsy&19#Dh`PY$sdd{-qtnz$CBbQLgYRZGzr^TXdGe2X(F-?u`mbfzj{#pUIdG%4iFq zmRC;?k4@vnxtf8-rmC+BmEE-oZ)6i85OS+Wju%C3Bx|!2OF638A#ZVHSfA90oWgWx|2!H-wr+4~EdBzqa(C8@nM(oEG znTPhINs~O&EMux@pnh>8w5h7*Tawo(_Ur|`kw{~5Q*!qJc4AtF;3AFlZld;Kt!dDl zepcW_w9*h_P&*3>W|tztH7c`i|7!TLmA78{CoQ7!5dZfXgKy8 zr)S_yYI$A;`n*yTtOz!vfEAQ%DZl^^yu*No+$Matu5GCqwIS=gSgQZyUnniS;-X3>+!M%vZXhoIVjvO%7J(&jvS{ z>=<~eL5~{zw4yrwsVOA8f3z@E<_SDX3q|)GuP&>zNG&N<<@5_y@?OT!&l`mLtis!KH)@SiQC$pak-rhovDsPuigEssg1e`u zX=7de=otHDQ0aCQ{HQu^(L{gikG{oY_pk=)sB<;3;N z&6nL0cAFl{IutA-J;>)qayNQGIY-*qVPkC4+;zkLxLb#e?Wzm|A8;LejdBq@inrsf zJ*<1*r%Z0qm{lO!sL;CA#CIbmYsjXg+|!vnV9&1JP5|~ea(MpRJpTsFr%-2E)k#{2 zBcJBdmpb7t#R$L~HHPU__o$91>KohrWyIqU&(8I#H&t4;XpGb)gF{v9WkBd4D|Xb#)d^@1DGWCpcSVoqcIgy{C4l3`=PCpSHS&xa?u|2n3d7r1nf8 zY7DUj9EY0+*%@fipujCgHD^?rHV|XOXCN;tfPeX1PF+-+ccrFG;vQ4>qoaCyK+m7IKOkT~sC4I~L(Ogj;otVL0RYPrmOwuoi1xFpfoee?PEA z{G%LhU!+J4(nLHXzxZNJjI<@OwttAp1!wa{n?nMEm(k#`(EL{`R=4|>Y0_VM2TfYU z!(`{YVE#vpMR?ZiM)mqSaV=b!Dvs!Eh0?JGb#6>tTYjeu zOBn}3msR-NNaFcjiUfjL^K1S}Rv|_P9Jn#Uw0#Sfvk4SUMy!b3dyTl4DqC$*@4&vV zudx<9NN1~FzIy?_NS&=~kRhdF8B(lQjuy#BIn9(-4;VZ6z zhQ#qvjCC1{(NY=5)E;O7HpUSBjtIOocAz)U$#lqx6e-2xK8Ub?Y+*OzU1+WeGCN)5 zIMF`u1=AMwKwJlcT>Muo7;+aZ=KA~VmX}*~c~!z5=rQ`13*YC_wiu3^fiR^zAdHB4 z1qOr5x~Y0aJ#DTvhL)M*TMASpY_kbROoQtr{7L@7+GU?jZyk#*3}BL?t|V~>AArik zDlw6%qJgm4Zpck$+3Lw8$jw*`mFV&4vM2N_IXH=XJ$6#i^Czge9}v4ZS>1ZMU_i(( zag)wTdNFU?%35?lO?bG1ePW)F3kCe%Ege6V5se4|u4C_H6FwSnK{>OM#L4GMJ3zJNXpA_6N z^#)x1PZ30u_V6o7kmkBvM+W@SwSs|qNV!{iaik`wlN{{=(Mb2*1?q5S-5|0pKkPO( z33O{QiaHicu{jBa*2jfHPGEbbz+2C8t8FwDr1{UL=-!VQHELF=mBP~ClV*=#5EZ#z z#vb1D!k<9IXb7*jExc?U7qt2yG-H;DauvQ@hcXyFqvjt zso8^X)vPXP@A-SDm#Du79~b?v{g<6BDW34J5C6xuZ~wi;@;i>_ccvVerL@J;j(j=T zflPXZx!!3i+iKy<-}GkkD)6y@Lj|R7(bLnUd(EroElX@!w3QKwE$QvMq>1oOj#`*R z7U+NqHtCx^+vwVOc^9aqq1ZYbQZwkwQp%us)Wbu$r;YTXWEhWPB_c zo_?>ZSWo!V7hB!u-@J)pi2Xo|iizz7)(3zaeKW9J5)-?62XOF+iCsDPf8$4UZAkcP zpT%q&hhoWD99NCn1{C%F3~>=Bg7p=~s?Y(uKItW&1JvX8qZy)uCPKUojpqZAQh0N? zh(|4#Fy$W)3Jxxd?fDkGaq5skXxyryL0I_o%*Vb`jvGml=>_AlnX5oJRykG3#+Ye} zK7e6%1$j;%fi(A3%yihk8yXr)s*x?!Zw?EeiPS`IumPWETLD33eJ+f?EdHjm(|m&l zg69qn4u0x|vFpN_qYdF}a|3@Ywz5(a{<_{jwH$~o-ee)2YArjiXAl}r+XBTJt^A2^ zH3*ca9*+V7TqaobSFC9NFGDzC#Kr&`mK8kq`p_SLU7^<{$8`;Eg@2vt=u0V9v~a5F z$zF`rM0BXE58ot`#RmA_zKC5_HwYgn z|5ov}P}x^EACJx6fxtcjWlkc+j!8(pT}YN(4j{UawCuQ|CU zN?~~f<9$&Qqy&5K*xII@-_w?HDT|;56gCsj?qMD4k39Ax!PQHQkIZ>XO|bvy+wYx` zAj`hQcrS4ggm?Q<*Jd-#AL%<^l?wY&)XnDq-~YU_P$rVVpXL&Nx}TX3j7qT!X4dCw J&Ro6w{{XjgClLSu literal 0 HcmV?d00001 diff --git a/13/umbraco-cms/extending/packages/images/azuredevops-release.png b/13/umbraco-cms/extending/packages/images/azuredevops-release.png new file mode 100644 index 0000000000000000000000000000000000000000..426d86e170cd3fb9ae2287d35c4b0d908178bcc2 GIT binary patch literal 26570 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 VyKa8&?mOrM#` +Backoffice - removing content @@ -104,7 +104,7 @@ Document Types can be removed from the **Settings** section. If fully removing t As opposed to Document Types, there are some Data Types that are available out of the box when Umbraco is installed. It is not recommended to remove them. The safe approach is to delete any item that starts with a Document Type prefix and includes multiple dashes. That is the default naming convention for new configurations of Data Types (Example: "Blog - How many posts should be shown - Slider") -Backoffice - removing data types +Backoffice - removing data types @@ -114,7 +114,7 @@ As opposed to Document Types, there are some Data Types that are available out o No Templates are available out of the box in a new installation. If cleaning up after a package, it would be okay to delete all that are present -Backoffice - removing templates +Backoffice - removing templates @@ -124,7 +124,7 @@ No Templates are available out of the box in a new installation. If cleaning up Out of the box, there are a few views available in the `blocklist` and `grid` folders. Everything else can theoretically be removed. -Backoffice - removing partial views +Backoffice - removing partial views @@ -154,7 +154,7 @@ In this example, we will be using the SEOChecker package. This package allows de An example use case of the SEOChecker property on a Document Type, as presented in the Content section: -![SEOChecker in content](../../../../10/umbraco-cms/extending/packages/images/seochecker-content-section.png) +![SEOChecker in content](images/seochecker-content-section.png) To uninstall the SEOChecker from a website, the first step is to remove the package via a `dotnet` command or use the NuGet Package Manager. @@ -172,7 +172,7 @@ After that, cleaning the solution is recommended. While uninstalling the package would remove most of the custom code, the `App_Plugins` folder has to be cleaned manually. -SEOChecker files in App Plugins +SEOChecker files in App Plugins Removing _seochecker_ folder from `App_Plugins` will clean up the leftover backoffice section and dashboards. @@ -184,6 +184,6 @@ If content on the website relies on having a custom Property Editor or a data so In the case of the SEOChecker, the custom property added from the package would look like this after all the package files have been removed: -![The SEOChecker in Content after removing the package](../../../../10/umbraco-cms/extending/packages/images/seochecker-after-removal.png) +![The SEOChecker in Content after removing the package](images/seochecker-after-removal.png) Depending on the packages and the implementation, rendering of content from custom editors, or any frontend functionality dependent on external code, might not work correctly. It is always recommended to inspect the frontend of the site after removing any packages. diff --git a/13/umbraco-cms/extending/property-editors/tracking.md b/13/umbraco-cms/extending/property-editors/tracking.md index ddb7c967611..f32a2b1c0e2 100644 --- a/13/umbraco-cms/extending/property-editors/tracking.md +++ b/13/umbraco-cms/extending/property-editors/tracking.md @@ -19,14 +19,14 @@ When a content node is saved it will save the entity references as relations. 1. Go to the **Media** section. 2. Select a media item and click the **Info** tab. - ![Viewing media references](../../../../10/umbraco-cms/extending/property-editors/images/media-references-v9.png) + ![Viewing media references](images/media-references-v9.png) ### For Content Nodes 1. Go to the **Settings** section. 2. Under the **Relation Types** folder, select **Related Document** relations and click **Relations**. - ![Viewing document references](../../../../10/umbraco-cms/extending/property-editors/images/document-references-v9.png) + ![Viewing document references](images/document-references-v9.png) ### For Data Types @@ -35,7 +35,7 @@ When a content node is saved it will save the entity references as relations. 3. Select the **Data Type** you wish to view the references 4. Navigate to the **Info** tab. - ![Viewing Data Type references](../../../../10/umbraco-cms/extending/property-editors/images/data-types-references-v10.png) + ![Viewing Data Type references](images/data-types-references-v10.png) ## Example diff --git a/13/umbraco-cms/extending/section-trees/searchable-trees.md b/13/umbraco-cms/extending/section-trees/searchable-trees.md index 20d42b5528e..08788484106 100644 --- a/13/umbraco-cms/extending/section-trees/searchable-trees.md +++ b/13/umbraco-cms/extending/section-trees/searchable-trees.md @@ -2,7 +2,7 @@ When you type a search term into the Umbraco backoffice search field, you'll see search results from all the Section Trees that your user account has permission to access: -![Content Section Dashboards](<../../../../10/umbraco-cms/extending/section-trees/images/backoffice-search-v8 (1).png>) +![Content Section Dashboards](images/backoffice-search-v8.png) The results are grouped by 'Section Tree' like Content, Media, Document Types. Each 'Tree' has its own associated search mechanism that receives the search term and looks for matches in the tree that is responsible for searching. @@ -121,7 +121,7 @@ public class FavouriteThingsSearchableTree : ISearchableTree That's all we need, after an application pool recycle, if we now search in the backoffice we'll see matches from our custom 'Favourite Things' tree: -![Content Section Dashboards](<../../../../10/umbraco-cms/extending/section-trees/images/favouritethings-search-v8 (1).png>) +![Content Section Dashboards](images/favouritethings-search-v8.png) Umbraco automatically finds any implementation of `ISearchableTree` in your site and automatically configures it to be used for the custom section mentioned in the TreeAlias property. Be careful not to accidentally have two `ISearchableTree` implementations trying to search the 'same' TreeAlias, it's _one_ `ISearchableTree` per TreeAlias. diff --git a/13/umbraco-cms/extending/section-trees/sections.md b/13/umbraco-cms/extending/section-trees/sections.md index 96e3ed042ee..3da424d4b30 100644 --- a/13/umbraco-cms/extending/section-trees/sections.md +++ b/13/umbraco-cms/extending/section-trees/sections.md @@ -98,11 +98,11 @@ The final order of the sections is down to the order of which the composers are You will also need to allow your current Umbraco User group access to this new Custom Section via the backoffice! (you will need to logout and back in again to see the change) -![Add Section for User](../../../../10/umbraco-cms/extending/section-trees/images/add-custom-section-v8.png) +![Add Section for User](images/add-custom-section-v8.png) ### Adding a Language Translation (get rid of the square brackets) -![Custom Section appears displaying Alias](<../../../../10/umbraco-cms/extending/section-trees/images/custom-section-alias-v8 (1).png>) +![Custom Section appears displaying Alias](images/custom-section-alias-v8.png) When your new custom section appears, you'll notice only the section 'Alias' is displayed inside square brackets. This is because Umbraco caters for Multiple Languages in the backoffice, and is looking for a translation file for the current backoffice culture, containing a translation key for your custom section alias. diff --git a/13/umbraco-cms/extending/section-trees/trees/README.md b/13/umbraco-cms/extending/section-trees/trees/README.md index fedae9e1c54..736468087d6 100644 --- a/13/umbraco-cms/extending/section-trees/trees/README.md +++ b/13/umbraco-cms/extending/section-trees/trees/README.md @@ -170,7 +170,7 @@ public class FavouriteThingsTreeController : TreeController } ``` -![Favourite Things Custom Tree](../../../../../10/umbraco-cms/extending/section-trees/trees/images/favourite-things-custom-tree-v8.png) +![Favourite Things Custom Tree](images/favourite-things-custom-tree-v8.png) ### Responding to Tree Actions @@ -223,7 +223,7 @@ Our Tree Action View would then be wired to the loaded controller using the `ng- ``` -![Delete Raindrops on Roses](<../../../../../10/umbraco-cms/extending/section-trees/trees/images/delete-raindrops-on-roses-v8 (1).png>) +![Delete Raindrops on Roses](images/delete-raindrops-on-roses-v8.png) Take a look at the [umbEditor directives in the backoffice API Documentation](https://apidocs.umbraco.com/v12/ui/#/api/umbraco.directives.directive:umbEditorHeader), for lots of common interaction directives. Those directives can be used to deliver a consistent backoffice editing experience for items in your custom tree. @@ -270,7 +270,7 @@ protected override ActionResult CreateRootNode(FormCollection queryStr The RoutePath should be in the format of: **section/treeAlias/method**. As our example controller uses the `PluginController` attribute, clicking the root node would now request `/App_Plugins/favouriteThing/backoffice/favouritistThingsAlias/overview.html`. If you are not using the `PluginController` attribute, then the request would be to `/umbraco/views/favouritistThingsAlias/overview.html`. -![Favourite Thing Custom Single Node Tree](../../../../../10/umbraco-cms/extending/section-trees/trees/images/favourite-thing-custom-single-node-tree.png) +![Favourite Thing Custom Single Node Tree](images/favourite-thing-custom-single-node-tree.png) #### Full Width App - IsSingleNodeTree diff --git a/13/umbraco-cms/extending/ui-library.md b/13/umbraco-cms/extending/ui-library.md index e402542749d..5ea8cf1107b 100644 --- a/13/umbraco-cms/extending/ui-library.md +++ b/13/umbraco-cms/extending/ui-library.md @@ -48,7 +48,7 @@ The [Storybook](https://uui.umbraco.com/) is the starting point for working with 1. Canvas - The Canvas tab allows to use the interactive controls. -
+
2. Docs - Here, you can find code examples for all the stories and use them in your markup. You can look it up by tag name or head to the project repository, where, in the packages folder, you will find all the component packages with all the necessary scripts and examples in the readme files. -
+
diff --git a/13/umbraco-cms/fundamentals/backoffice/README.md b/13/umbraco-cms/fundamentals/backoffice/README.md index 1bca06a90ad..9a0ae052ae4 100644 --- a/13/umbraco-cms/fundamentals/backoffice/README.md +++ b/13/umbraco-cms/fundamentals/backoffice/README.md @@ -22,7 +22,7 @@ A section in Umbraco is where you do specific tasks related to that section. For _The **Section menu** is the horizontal menu located on the top of the backoffice._ -
+
[Read more about the section menu](sections.md). @@ -30,9 +30,9 @@ _The **Section menu** is the horizontal menu located on the top of the backoffic A tree is a hierarchical list of items related (and usually restricted) to a specific concept, like for example content or media. -You can expand trees by clicking the down arrow ![](../../../../10/umbraco-cms/fundamentals/backoffice/images/expand-node.png) to the left of the node or by double-clicking the node. +You can expand trees by clicking the down arrow ![](images/expand-node.png) to the left of the node or by double-clicking the node. -
+
[Read more about the Tree](../../extending/section-trees/) @@ -46,7 +46,7 @@ A dashboard is the main view you are presented with when entering a section with _Default dashboard in the content section_ -
+
[Read more about Dashboards](../../extending/dashboards.md) diff --git a/13/umbraco-cms/fundamentals/backoffice/content-templates.md b/13/umbraco-cms/fundamentals/backoffice/content-templates.md index a67257f8fc5..47e3583074f 100644 --- a/13/umbraco-cms/fundamentals/backoffice/content-templates.md +++ b/13/umbraco-cms/fundamentals/backoffice/content-templates.md @@ -20,23 +20,23 @@ Before following this method you should have some [content](../data/defining-con Select a **Content node** from the **Content** menu: -![Content Menu](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-01-Content-Menu.png) +![Content Menu](images/v8-01-Content-Menu.png) Right-click the Content node and select the **Create Content Template** option. Alternatively, select the **Actions** dropdown of the content node and select the **Create Content Template** option: -![Actions Button](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-02-Actions-Menu.png) +![Actions Button](images/v8-02-Actions-Menu.png) Give your content template a **Name**: -![Content Template Name Field](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-03-Name-Content-Template.png) +![Content Template Name Field](images/v8-03-Name-Content-Template.png) Click the **Create** button and if the creation was successful, you will see a success notification: -![Create Button](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-04-Save-Content-Template.png) +![Create Button](images/v8-04-Save-Content-Template.png) The new content template will be created in **Content Templates** node of the **Settings** tree: -![New Content Template](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-05-Find-Content-Template.png) +![New Content Template](images/v8-05-Find-Content-Template.png) {% hint style="info" %} Refresh your browser, if you do not see the new content template in the **Content Templates** folder. @@ -46,15 +46,15 @@ Refresh your browser, if you do not see the new content template in the **Conten Click on the **Settings** menu: -![Settings Menu](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-07-Settings-Menu.png) +![Settings Menu](images/v8-07-Settings-Menu.png) Right-click on the **Content Templates** tree and select the **Create** menu item: -![Create Content Template](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-08-Create-Content-Template.png) +![Create Content Template](images/v8-08-Create-Content-Template.png) Select the Document Type you want to create a content template for: -![Select Content Type](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-09-Select-Content-Type.png) +![Select Content Type](images/v8-09-Select-Content-Type.png) {% hint style="warning" %} You can create content templates only from **Document Types** or **Document Types with Templates** @@ -62,27 +62,27 @@ You can create content templates only from **Document Types** or **Document Type Give your content template a **Name** and click the **Save** button: -![Content Template Name Field](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-10-Save-Template.png) +![Content Template Name Field](images/v8-10-Save-Template.png) The new content template will be created in **Content Templates** folder of the **Settings** tree: -![New Content Template](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-11-Find-Template.png) +![New Content Template](images/v8-11-Find-Template.png) ## Edit To edit an existing content template, select a content template from the **Content Templates** folder of the **Settings** tree. When you have finished editing click the **Save** button: -![Edit Content Template](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-06-Edit-Content-Template.png) +![Edit Content Template](images/v8-06-Edit-Content-Template.png) ## Use Once you have created a content template, you can use the template to create new content nodes. To use a content template, right-click the **Content** tree and select **Create**: -![Create From Template](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-12-Create-From-Template.png) +![Create From Template](images/v8-12-Create-From-Template.png) When you click on a Document Type that has a content template you will see two options: * Create a new node based on a content template * Create a blank one -![Select Template](../../../../10/umbraco-cms/fundamentals/backoffice/images/v8-13-Select-Template.png) +![Select Template](images/v8-13-Select-Template.png) diff --git a/13/umbraco-cms/fundamentals/backoffice/infinite-editing.md b/13/umbraco-cms/fundamentals/backoffice/infinite-editing.md index 11b9ef0dc50..1bbc76b3572 100644 --- a/13/umbraco-cms/fundamentals/backoffice/infinite-editing.md +++ b/13/umbraco-cms/fundamentals/backoffice/infinite-editing.md @@ -10,7 +10,7 @@ This feature enables you to work with your content without losing the context of Document Types are in different sections than content but infinite editing enables you to make changes to them directly from the content you are editing. -![Infinite Editing](../../../../10/umbraco-cms/fundamentals/backoffice/images/Infinite-editing.gif) +![Infinite Editing](images/Infinite-editing.gif) In the example showcased above, prevalues are being added to a Data Type, without losing the context of the content that's being worked on. The example also shows how you can edit images, without being sent to the 'Media' section. diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/README.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/README.md index f8533b31166..3c9ff633544 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/README.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/README.md @@ -10,7 +10,7 @@ A Property Editor is the editor that a Data Type references. A Data Type is defi When creating a Data Type, specify the property editor for the Data Type to use by selecting from the "Property editor" list (as shown below). -![Data Type Definition](../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/images/Media-picker-dataType-v9.png) +![Data Type Definition](images/Media-picker-dataType-v9.png) ## [Built-in Property Editors in Umbraco](built-in-umbraco-property-editors/) diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-grid-editor.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-grid-editor.md index 56c7206e983..de52cf031a8 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-grid-editor.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-grid-editor.md @@ -10,7 +10,7 @@ The **Block Grid** property editor enables editors to layout their content in th When testing out the property editor, you can use a set of predefined Blocks. The option will only be possible when there are no other Data Types using the Block Grid property editor. -
+
* Create a new **Data Type**. * Select the **Block Grid** as the **Property editor**. @@ -31,7 +31,7 @@ To set up the Block Grid property editor, follow these steps: You will see the configuration options for a Block Grid property editor as shown below: -![Block Grid - Data Type Configuration](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_Configuration.png) +![Block Grid - Data Type Configuration](../../built-in-property-editors/block-editor/images/BlockGridEditor_Configuration.png) The Data Type editor allows you to configure the following properties: @@ -49,7 +49,7 @@ Block Types are based on [**Element Types**](../../../../data/defining-content/# Once you have added an Element Type as a Block Type on your Block Grid Data Type you have the option to configure it. -![Block Grid - Data Type Block Configuration](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_DataType\_Blocks.png) +![Block Grid - Data Type Block Configuration](../../built-in-property-editors/block-editor/images/BlockGridEditor_DataType_Blocks.png) [Examples and more details about configuring the Label property](label-property-configuration.md) @@ -126,11 +126,11 @@ To scale an Area, click and drag the scale-button in the bottom-right corner of * **Grid Columns for Areas** - Overwrites the amount of columns used for the Area grid. * **Areas** - Determines whether the Block can be created inside Areas of other Blocks. -![Block Grid - Areas](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_Areas.png) +![Block Grid - Areas](../../built-in-property-editors/block-editor/images/BlockGridEditor_Areas.png) ### Area configuration -![Block Grid - Area Configuration](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_AreasConfiguration.png) +![Block Grid - Area Configuration](../../built-in-property-editors/block-editor/images/BlockGridEditor_AreasConfiguration.png) * **Alias** - The alias is used to identify this Area. It is being printed by `GetBlockGridHTML()` and used as name for the Area slot in Custom Views. The alias is also available for CSS Selectors to target the HTML-Element representing an Area. * **Create Button Label** - Overwrites the Create Button Label of the Area. @@ -157,25 +157,25 @@ Notice that any styling of a Block is scoped. This means that the default backof When viewing a **Block Grid** property editor in the **Content** section for the first time, you will be presented with the option to **Add content**. -![Block Grid - Add Content](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_AddContent.png) +![Block Grid - Add Content](../../built-in-property-editors/block-editor/images/BlockGridEditor_AddContent.png) Clicking the **Add content** button opens up the **Block Catalogue**. -![Block Grid - Setup](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_BlockPicker.png) +![Block Grid - Setup](../../built-in-property-editors/block-editor/images/BlockGridEditor_BlockPicker.png) The Block Catalogue looks different depending on the amount of available Blocks and their catalogue appearance. -![Block Grid - example setup](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_BlockPicker\_exsetup.png) +![Block Grid - example setup](../../built-in-property-editors/block-editor/images/BlockGridEditor_BlockPicker_exsetup.png) Click the Block Type you wish to create and a new Block will appear in the layout. More Blocks can be added to the layout by clicking the Add content button. Alternatively, use the Add content button that appears on hover to add new Blocks between, besides, or above the existing Blocks. -![Block Grid - Add Content Inline](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_AddContentInline.png) +![Block Grid - Add Content Inline](../../built-in-property-editors/block-editor/images/BlockGridEditor_AddContentInline.png) To delete a Block, click the trash icon which appears on the mouse hover. -![Block Grid - Delete Content](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockGridEditor\_DeleteContent.png) +![Block Grid - Delete Content](../../built-in-property-editors/block-editor/images/BlockGridEditor_DeleteContent.png) ## Sorting Blocks @@ -183,7 +183,7 @@ Blocks can be rearranged using the click and drag feature. Move them up or down Moving a Block from one Area to another is done in the same way. If a Block is not allowed in the given position, the area will display a red color and not allow the new position. -![Block Grid - Sorting Blocks](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/Sorting\_BlockGrid\_Blocks.gif) +![Block Grid - Sorting Blocks](../../built-in-property-editors/block-editor/images/Sorting_BlockGrid_Blocks.gif) ## Scaling Blocks @@ -191,7 +191,7 @@ If a Block has multiple size options it can be scaled via the UI. This appears i The Block is resized using a click-and-drag feature. Moving the mouse will change the size to the size options closest to the mouse pointer. -

Scale blocks in the grid by dragging from the bottom-right corner.

+

Scale blocks in the grid by dragging from the bottom-right corner.

## Rendering Block Grid Content diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-list-editor.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-list-editor.md index e8279c8cffa..99641a24d3d 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-list-editor.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/block-editor/block-list-editor.md @@ -18,7 +18,7 @@ To set up your Block List Editor property, create a new _Data Type_ and select * Then you will see the configuration options for a Block List as shown below. -![Block List - Data Type Definition](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_DataType.jpg) +![Block List - Data Type Definition](../../built-in-property-editors/block-editor/images/BlockListEditor_DataType.jpg) The Data Type editor allows you to configure the following properties: @@ -35,7 +35,7 @@ Block Types are **Element Types** which need to be created before you can start Once you have added an element type as a Block Type on your Block List Data Type you will have the option to configure it further. -![Block List - Data Type Block Configuration](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_DataType\_Blocks.png) +![Block List - Data Type Block Configuration](../../built-in-property-editors/block-editor/images/BlockListEditor_DataType_Blocks.png) Each Block has a set of properties that are optional to configure. They are described below. @@ -75,15 +75,15 @@ These properties are relevant when you work with custom views. When viewing a **Block List** editor in the Content section for the first time, you will be presented with the option to Add content. -![Block List - Add Content](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_AddContent.png) +![Block List - Add Content](../../built-in-property-editors/block-editor/images/BlockListEditor_AddContent.png) Clicking the Add content button brings up the Block Catalogue. -![Block List - Setup](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_BlockPicker\_simplesetup.jpg) +![Block List - Setup](../../built-in-property-editors/block-editor/images/BlockListEditor_BlockPicker_simplesetup.jpg) The Block Catalogue looks different depending on the amount of available Blocks and their catalogue appearance. -![Block List - example setup from Umbraco.com](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_BlockPicker.jpg) +![Block List - example setup from Umbraco.com](../../built-in-property-editors/block-editor/images/BlockListEditor_BlockPicker.jpg) Click the Block Type you wish to create and a new Block will appear in the list. @@ -91,15 +91,15 @@ Depending on whether your Block List Editor is setup to use default or inline ed In default mode you will enter the editing overlay of that Block: -![Block List - Overlay editing](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_EditingOverlay.jpg) +![Block List - Overlay editing](../../built-in-property-editors/block-editor/images/BlockListEditor_EditingOverlay.jpg) In inline editing mode the new Blocks will expand to show its inline editor: -![Block List - Inline editing](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_InlineEditing.jpg) +![Block List - Inline editing](../../built-in-property-editors/block-editor/images/BlockListEditor_InlineEditing.jpg) More Blocks can be added to the list by clicking the Add content button or using the inline Add content button that appears on hover between or above existing Blocks. -![Block List - Add Content](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/block-editor/images/BlockListEditor\_AddContentInline.jpg) +![Block List - Add Content](../../built-in-property-editors/block-editor/images/BlockListEditor_AddContentInline.jpg) To reorder the Blocks, click and drag a Block up or down to place in the desired order. diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/checkbox-list.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/checkbox-list.md index babf5c7c4c6..d6524d6fb35 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/checkbox-list.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/checkbox-list.md @@ -12,7 +12,7 @@ Unlike other property editors, the Prevalue IDs are not directly accessible in R ## Data Type Definition Example -![True/Checkbox List Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/checkbox-list-setup-v8.png) +![True/Checkbox List Definition](../built-in-property-editors/images/checkbox-list-setup-v8.png) {% hint style="info" %} You can use dictionary items to translate the values of a Checkbox List property editor in a multilingual setup. For more details, see the [Creating a Multilingual Site](../../../../tutorials/multilanguage-setup.md#translating-multi-value-property-editors) article. @@ -20,7 +20,7 @@ You can use dictionary items to translate the values of a Checkbox List property ## Content Example -![Checkbox List Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/checkbox-list-content.png) +![Checkbox List Example](../built-in-property-editors/images/checkbox-list-content.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/color-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/color-picker.md index 49ffee1eb20..60ffc85f134 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/color-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/color-picker.md @@ -12,11 +12,11 @@ It's possible to add a label to use with the color. ## Data Type Definition Example -![Color Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Color-Picker-DataType-v10.png) +![Color Picker Data Type Definition](../built-in-property-editors/images/Color-Picker-DataType-v10.png) ## Content Example -![Color Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Color-Picker-Content-v8.png) +![Color Picker Content](../built-in-property-editors/images/Color-Picker-Content-v8.png) ## Example with Modelsbuilder diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/content-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/content-picker.md index 626f9ca048c..6dfe04ded0f 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/content-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/content-picker.md @@ -8,11 +8,11 @@ The content picker opens a panel to pick a specific page from the content struct ## Data Type Definition Example -![Content Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Content-Picker2-DataType-v10.png) +![Content Picker Data Type Definition](../built-in-property-editors/images/Content-Picker2-DataType-v10.png) ## Content Example -![Content Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Content-Picker-Content-v10.png) +![Content Picker Content](../built-in-property-editors/images/Content-Picker-Content-v10.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date-time.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date-time.md index 30808ce4862..d3f3c07320b 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date-time.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date-time.md @@ -8,7 +8,7 @@ Displays a calendar UI for selecting dates which are saved as a DateTime value. ## Data Type Definition Example -![Data Type Definition Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/date-time-v8.png) +![Data Type Definition Example](../built-in-property-editors/images/date-time-v8.png) There are two settings available for manipulating the DateTime property. @@ -18,7 +18,7 @@ The second setting is "Offset time". When enabling this setting the displayed ti ## Content Example -![Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/date-picker-v8.png) +![Content Example](../built-in-property-editors/images/date-picker-v8.png) ## MVC View Example - displays a datetime diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date.md index 21b95bc5c15..28130e6cefb 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/date.md @@ -6,13 +6,13 @@ Displays a calendar UI for selecting dates which are saved as a DateTime value. ## Data Type Definition Example -![Data Type Definition Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/DateTime-DataType.png) +![Data Type Definition Example](../built-in-property-editors/images/DateTime-DataType.png) The only setting that is available for manipulating the Date property is to set a format. By default the format of the date in the Umbraco backoffice will be `YYYY-MM-DD`, but you can change this to something else. See [MomentJS.com](https://momentjs.com/) for the supported formats. ## Content Example -![Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Date-Time-Content.png) +![Content Example](../built-in-property-editors/images/Date-Time-Content.png) ## MVC View Example - displays a datetime diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/decimal.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/decimal.md index a393e76248e..7786c581e39 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/decimal.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/decimal.md @@ -6,7 +6,7 @@ ## Data Type Definition Example -![Data Type Definition Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/definition-example.png) +![Data Type Definition Example](../built-in-property-editors/images/definition-example.png) In the example above the possible values for the input field would be \[8, 8.5, 9, 9.5, 10] @@ -16,7 +16,7 @@ If the value of **Step Size** is not set then all decimal values between 8 and 1 ## Content Example -![Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/content-example.png) +![Content Example](../built-in-property-editors/images/content-example.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/dropdown/README.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/dropdown/README.md index 4d79a42af96..489cb536a1d 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/dropdown/README.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/dropdown/README.md @@ -22,17 +22,17 @@ You can use dictionary items to translate the values of a Dropdown property edit ## Data Type Definition Example -![Dropdown Data Type Definition](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/dropdown/images/Dropdown-DataType-v10.png) +![Dropdown Data Type Definition](../../built-in-property-editors/dropdown/images/Dropdown-DataType-v10.png) ## Content Example ### Single Value -![Single dropdown content example](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/dropdown/images/DropdownSingle-Content.png) +![Single dropdown content example](../../built-in-property-editors/dropdown/images/DropdownSingle-Content.png) ### Multiple Values -![Multiple dropdown content example](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/dropdown/images/DropdownMultiple-Content.png) +![Multiple dropdown content example](../../built-in-property-editors/dropdown/images/DropdownMultiple-Content.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/email-address.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/email-address.md index 7beaf17f5d9..9a7bd36f615 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/email-address.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/email-address.md @@ -14,11 +14,11 @@ Displays an email address. The Email Address Property Editor does not come with any further configuration. The property can be configured once it has been added to a Document Type. -![Mandatory Checkbox Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/emailaddress-datatype-v10.png) +![Mandatory Checkbox Example](../built-in-property-editors/images/emailaddress-datatype-v10.png) ## Content Example -![Single email address content example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/EmailAddress-Content-v10.png) +![Single email address content example](../built-in-property-editors/images/EmailAddress-Content-v10.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/eye-dropper-color-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/eye-dropper-color-picker.md index c0fa88a2d1e..f5a4ea2afd6 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/eye-dropper-color-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/eye-dropper-color-picker.md @@ -8,11 +8,11 @@ The Eye Dropper Color picker allows you to choose a color from the full color sp ## Data Type Definition Example -![Eye Dropper Color Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Eye-Dropper-Color-Picker-DataType-v8.png) +![Eye Dropper Color Picker Data Type Definition](../built-in-property-editors/images/Eye-Dropper-Color-Picker-DataType-v8.png) ## Content Example -![Eye Dropper Color Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Eye-Dropper-Color-Picker-Content-v8.png) +![Eye Dropper Color Picker Content](../built-in-property-editors/images/Eye-Dropper-Color-Picker-Content-v8.png) ## Example with Modelsbuilder diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/file-upload.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/file-upload.md index cdf64fbd205..dff9d19c028 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/file-upload.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/file-upload.md @@ -16,11 +16,13 @@ Find the full documentation for the property in the [Media Picker](media-picker- ## Data Type Definition Example -![Data Type Definition Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/definition-example-v10.png) +![Data Type Definition Example](../built-in-property-editors/images/definition-example-v10.png) ## Content Example -![Content Example Empty](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/content-example-empty.png) ![Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/File-Upload-content-example.png) +![Content Example Empty](../built-in-property-editors/images/content-example-empty.png) + +![Content Example](../built-in-property-editors/images/File-Upload-content-example.png) In code, the property is a string, which references the location of the file. diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/add-value-programmatically.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/add-value-programmatically.md index e5593016743..5e9a2457c68 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/add-value-programmatically.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/add-value-programmatically.md @@ -4,7 +4,7 @@ For this example, the default grid configuration has been used. -![Grid configuration](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/grid-layout/Images/Grid-configuration.jpg) +![Grid configuration](../../built-in-property-editors/grid-layout/Images/Grid-configuration.jpg) ## Set value diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/configuring-the-grid-layout-datatype.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/configuring-the-grid-layout-datatype.md index b6a24ac3c55..059e744ec40 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/configuring-the-grid-layout-datatype.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/configuring-the-grid-layout-datatype.md @@ -9,11 +9,11 @@ A layout is the general grid "container", it contains one or more sections which 1. A single column layout which to the content editor will act like a full page canvas to insert elements on 2. A multiple column layout with a main content body, and one or more sidebar columns to insert lists or other sidebar widgets on. -
+
You can however configure as many layouts and layout sections as you wish, each section in the layout must be given a width in columns, so editors gets an accurate preview of their layout. -
+
## Row configurations @@ -21,10 +21,10 @@ A row in the grid editor contains one or more cells, which divide the row into a It is possible to setup configurable attributes(class, rel, href) and inline styling on rows. -
+
You can add as many cells as you like. If they overflow the total width of the row, they will be arranged after each other horizontally as you'd expect in a grid system. -
+
Each cell can by default contain any type of editor such as textstring editors, imagespicker, embedded media or Umbraco macros. To override this behavior, uncheck the **allow all editors** option and you can specify which editors will be available for the row. diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/grid-editors.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/grid-editors.md index 224b95f48d4..847d04aba10 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/grid-editors.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/grid-editors.md @@ -179,7 +179,7 @@ The `config.markup` is the string rendered server side in your template. `#value In this sample `config.size` will resize the image according to `height` and `width`. The above example will result in a rendered image that is 200x200 pixels no matter the size of the uploaded image. If the ratio of the size differs from the uploaded image it is possible to set a focal point that determines how the image should be cropped. -
+
**Sample macro config** diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/settings-and-styles.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/settings-and-styles.md index b9796b85ce6..a771e66bbb4 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/settings-and-styles.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/settings-and-styles.md @@ -2,7 +2,7 @@ A grid layout can also expose custom settings - such as data-attributes or styling options - on each cell or row. This allows editors to use a friendly UI to add configuration values to grid elements. When custom settings and styles are applied, they will by default be included in the grid html as either html attributes or inline styles. -
+
These settings and styles must be configured by developers when setting up the grid layout data type. diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/what-are-grid-layouts.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/what-are-grid-layouts.md index 4a9c8290d38..4d526a5442c 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/what-are-grid-layouts.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/grid-layout/what-are-grid-layouts.md @@ -8,10 +8,10 @@ Grid layouts consists of two main areas that need to be configured, _grid layout The _layout area_ is where the overall page layout is defined. _Layout areas_ are divided in to _layout sections_ e.g. a sidebar section and content section. The size of the _layout sections_ is defined in columns. For a full-width content area use max number of columns (12 for Bootstrap 3). Each _layout section_ contains one or more _rows_. -
+
### Grid Rows Grid _rows_ is where the actual content goes. Each row is divided into _cells_ that contain the property editors. The size of the cells is defined in columns. Unlike the _layouts sections_ it is possible to add more _cells_ than the max number of columns - they will stack as they should in a grid system. -
+
diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/image-cropper.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/image-cropper.md index 6ca37d87849..eb9951007aa 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/image-cropper.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/image-cropper.md @@ -18,7 +18,7 @@ You can add, edit & delete crop presets the cropper UI can use. ## Data Type Definition Example -![Image Cropper Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/imageCropper-v9.png) +![Image Cropper Data Type Definition](../built-in-property-editors/images/imageCropper-v9.png) ## Content Example @@ -36,7 +36,7 @@ The Image Cropper comes with 3 modes: The editor exposes a drop area for files. Select it to upload an image. -![Image Cropper Upload](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/imageCropper-upload-v8.png) +![Image Cropper Upload](../built-in-property-editors/images/imageCropper-upload-v8.png) ### Set focal point @@ -44,13 +44,13 @@ By default, the Image Cropper allows the editor to set a focal point on the uplo All the preset crops are shown to give the editor a preview of what the image will look like on the frontend. -![Image Cropper Focal point](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/imageCropper-focalpoint-v8.png) +![Image Cropper Focal point](../built-in-property-editors/images/imageCropper-focalpoint-v8.png) ### Crop and resize The editor can fit the crop to the image to ensure that the image is presented as intended. -![Image Cropper Crop](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/imageCropper-crop-v8.png) +![Image Cropper Crop](../built-in-property-editors/images/imageCropper-crop-v8.png) ## Powered by ImageSharp.Web diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/label.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/label.md index a5cf504c719..17d1d48c635 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/label.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/label.md @@ -8,7 +8,7 @@ Label is a non-editable control and can only be used to display a pre-set value. ## Data Type Definition Example -![Label Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Label-Setup-v8.png) +![Label Data Type Definition](../built-in-property-editors/images/Label-Setup-v8.png) ### Value type @@ -18,7 +18,7 @@ There is also a Value Type: Long string if you need to set a long string value f ## Content Example -![Label Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Label-Content-v8.png) +![Label Content Example](../built-in-property-editors/images/Label-Content-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/listview.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/listview.md index eb8f5f228ef..bfa782c013b 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/listview.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/listview.md @@ -6,17 +6,19 @@ **List View** display a list of categories when it is enabled on a Document Type that has children. -![List view example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/listview.png) +![List view example](../built-in-property-editors/images/listview.png) ## Enable list view If enabled, editors will be able to see multiple children from a list on a content node that has children. When not enabled, no list will be shown and all children will be shown in the Content Tree. -![Enable List view example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/enable-listview.png) +![Enable List view example](../built-in-property-editors/images/enable-listview.png) ## Settings -![List view settings example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/list-view-settings1-v10.png) ![List view settings example 2](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/list-view-settings2-v10.png) +![List view settings example](../built-in-property-editors/images/list-view-settings1-v10.png) + +![List view settings example 2](../built-in-property-editors/images/list-view-settings2-v10.png) ### Page Size @@ -40,7 +42,9 @@ You can select order of the content nodes displayed, "Acsending" or "Descending" It is possible to add more columns to the list, via adding the properties through the dropdown. These properties are based on the Data Types which are used by the Document Type. It will show up in the dropdown by its alias and not the name on the property. -![List view property example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/listview-property.png) ![List view property example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/listview-property-dropdown.png) +![List view property example](../built-in-property-editors/images/listview-property.png) + +![List view property example](../built-in-property-editors/images/listview-property-dropdown.png) Once you have selected a column that you want to display, the next thing you want to do is define what its name should be and what kind of value it should display. You can also move the headers around, re-ordering how the headers should look. This is done by the move icon on the left side of the alias. @@ -70,7 +74,7 @@ Select what kind of action is available on the list view. Changes the icon in the backoffice of the listview. By default it will look like the image below. -![List icon example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/list-icon.png) +![List icon example](../built-in-property-editors/images/list-icon.png) ### Content app name @@ -84,26 +88,26 @@ Enable this to show the content app by default instead of the list view ### Generic field value -This example uses a generic field on a child item and displays it in the list. ![List view content example email](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/listview-content-example-email-settings.png) +This example uses a generic field on a child item and displays it in the list. ![List view content example email](../built-in-property-editors/images/listview-content-example-email-settings.png) The `{{ value }}` will take the value of the Email property and display it in the list, as shown on the image below. -![List view content example email](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/listview-content-example-email.png) +![List view content example email](../built-in-property-editors/images/listview-content-example-email.png) ### Member name First, a Member Picker property needs to be present on the content item. In this example, the `child item` has gotten a Member Picker Data Type with the alias of `isAuthor`. -![List view member picker](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/member-picker.png) +![List view member picker](../built-in-property-editors/images/member-picker.png) Now that the child item has a member and the value that should be displayed is the name of the picked value, the next step is to reconfigure the template value in the listview setting. -![List view member picker](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/member-picker-settings.png) +![List view member picker](../built-in-property-editors/images/member-picker-settings.png) -This will take the value picked up by the member picker. ![List view member picker](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/picked-member.png) +This will take the value picked up by the member picker. ![List view member picker](../built-in-property-editors/images/picked-member.png) -And display it in the listview. Shown in the example below: ![List view member picker](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/list-member-picked.png) +And display it in the listview. Shown in the example below: ![List view member picker](../built-in-property-editors/images/list-member-picked.png) ### Other examples -![List view other examples](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/others.png) ![List view other examples](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/others-result.png) +![List view other examples](../built-in-property-editors/images/others.png) ![List view other examples](../built-in-property-editors/images/others-result.png) diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/markdown-editor.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/markdown-editor.md index 1900fc564d4..e205efda9d1 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/markdown-editor.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/markdown-editor.md @@ -8,7 +8,7 @@ This built-in editor allow the user to use the markdown formatting options, from ## Data Type Definition Example -![Definition Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Markdown-Editor-definition-example-v10.png) +![Definition Example](../built-in-property-editors/images/Markdown-Editor-definition-example-v10.png) There are three settings available for manipulating the **Markdown editor** property. @@ -18,7 +18,7 @@ There are three settings available for manipulating the **Markdown editor** prop ## Content Example -![Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Markdown-Editor-content-example.png) +![Content Example](../built-in-property-editors/images/Markdown-Editor-content-example.png) ### Explanation of buttons from left to right diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker-3.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker-3.md index 1c6d30819df..b9257b020d2 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker-3.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker-3.md @@ -11,7 +11,7 @@ This property editors returns one of the following: ## Data Type Definition Example -![Media Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/MediaPicker-DataType-v10.png) +![Media Picker Data Type Definition](../built-in-property-editors/images/MediaPicker-DataType-v10.png) ### Accepted types @@ -57,7 +57,7 @@ Global crops are configured on the Image Cropper property of the Image Media Typ ## Content Example -![Media Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Media-Picker3-Content.jpg) +![Media Picker Content](../built-in-property-editors/images/Media-Picker3-Content.jpg) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker.md index f6b33bc2b5d..b6345799e7a 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/media-picker.md @@ -14,7 +14,7 @@ This property editors returns a single item if the "Pick multiple items" Data Ty ## Data Type Definition Example -![Media Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Media-Picker-DataType-v10.png) +![Media Picker Data Type Definition](../built-in-property-editors/images/Media-Picker-DataType-v10.png) ### Ignore user start nodes @@ -24,7 +24,7 @@ When this setting is enabled, a user who doesn't normally have access to the med ## Content Example -![Media Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Media-Picker-Content-v8.png) +![Media Picker Content](../built-in-property-editors/images/Media-Picker-Content-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-group-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-group-picker.md index 8bf8da56332..8ea46e67385 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-group-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-group-picker.md @@ -8,11 +8,11 @@ The Member Group Picker opens a panel to pick one or more member groups from the ## Data Type Definition Example -![Member Group Picker Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Member-Picker-DataType.png) +![Member Group Picker Type Definition](../built-in-property-editors/images/Member-Picker-DataType.png) ## Content Example -![Member Grouep Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Member-Group-Picker-Content.png) +![Member Grouep Picker Content](../built-in-property-editors/images/Member-Group-Picker-Content.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-picker.md index 574bf12afe4..73b36f9cf24 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/member-picker.md @@ -8,11 +8,11 @@ The member picker opens a panel to pick a specific member from the member sectio ## Data Type Definition Example -![Media Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Member-Picker-DataType-v8.png) +![Media Picker Data Type Definition](../built-in-property-editors/images/Member-Picker-DataType-v8.png) ## Content Example -![Member Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Member-Picker-Content-v8.png) +![Member Picker Content](../built-in-property-editors/images/Member-Picker-Content-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multi-url-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multi-url-picker.md index 74f110a6239..e38c6b531ce 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multi-url-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multi-url-picker.md @@ -8,11 +8,11 @@ Multi Url Picker allows an editor to pick and sort multiple urls. This property ## Data Type Definition Example -![Related Links Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Multy-Url-Picker-DataType-v10.png) +![Related Links Data Type Definition](../built-in-property-editors/images/Multy-Url-Picker-DataType-v10.png) ## Content Example -![Media Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Multy-Url-Picker-Content-v8.png) +![Media Picker Content](../built-in-property-editors/images/Multy-Url-Picker-Content-v8.png) ## MVC View Example - value converters enabled diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multiple-textbox.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multiple-textbox.md index c3adce112dd..acd77c3be37 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multiple-textbox.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/multiple-textbox.md @@ -8,11 +8,11 @@ The Repeatable textstrings property editor enables a content editor to make a li ## Data Type Definition Example -![Repeatable textstrings Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Repeatable-Textstrings-DataType-v10.png) +![Repeatable textstrings Data Type Definition](../built-in-property-editors/images/Repeatable-Textstrings-DataType-v10.png) ## Content Example -![Repeatable textstrings Content](<../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Multiple-Textbox-Repeatable-Textstrings-Content (1) (1).png>) +![Repeatable textstrings Content](../built-in-property-editors/images/Multiple-Textbox-Repeatable-Textstrings-Content.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/numeric.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/numeric.md index 6ad73a16475..784c6533e48 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/numeric.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/numeric.md @@ -8,7 +8,7 @@ Numeric is an HTML input control for entering numbers. Since it's a standard HTM ## Data Type Definition Example -![Numeric Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/numeric-datatype-v10.png) +![Numeric Data Type Definition](../built-in-property-editors/images/numeric-datatype-v10.png) ### Minimum @@ -26,7 +26,7 @@ This allows you to set up a maximum value. If you will always need a maximum val ## Content Example -![Numeric Content Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/numeric-content.png) +![Numeric Content Definition](../built-in-property-editors/images/numeric-content.png) ## MVC View Examples diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/radiobutton-list.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/radiobutton-list.md index 3ec2ae1e8f5..ad921e1f0f6 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/radiobutton-list.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/radiobutton-list.md @@ -8,7 +8,7 @@ Pretty much like the name indicates this Data type enables editors to choose fro ## Data Type Definition Example -![Radiobutton List Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/RadioButton-List-DataType-v10.png) +![Radiobutton List Data Type Definition](../built-in-property-editors/images/RadioButton-List-DataType-v10.png) {% hint style="info" %} You can use dictionary items to translate the values of a Radiobutton List property editor in a multilingual setup. For more details, see the [Creating a Multilingual Site](../../../../tutorials/multilanguage-setup.md#translating-multi-value-property-editors) article. @@ -16,7 +16,7 @@ You can use dictionary items to translate the values of a Radiobutton List prope ## Content Example -![Radiobutton List Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/RadioButton-List-Content-v8.png) +![Radiobutton List Content](../built-in-property-editors/images/RadioButton-List-Content-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/README.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/README.md index 7845e079379..bff7894eb6c 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/README.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/README.md @@ -37,7 +37,7 @@ Extend the functionality of the Rich Text Editor with plugins. ## Data Type Definition Example -![Rich Text Editor - Data Type](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/rich-text-editor/images/rte-datatype-v10.png) +![Rich Text Editor - Data Type](../../built-in-property-editors/rich-text-editor/images/rte-datatype-v10.png) ## Content Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/rte-styles.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/rte-styles.md index 936a6c304e4..b3992aa2a0c 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/rte-styles.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/rte-styles.md @@ -17,13 +17,13 @@ This will generate an empty CSS file in your project. At this point, you can start adding specific styles, that your editors can then use in the Content section when creating and writing new content. -![Add specific RTE styles](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/rich-text-editor/images/rte-create-style.png) +![Add specific RTE styles](../../built-in-property-editors/rich-text-editor/images/rte-create-style.png) The image above is an example of how an RTE style can be configured. When working with these styles, the **Preview** feature will show you how the style will look when applied. Every style you add, will automatically be added to the CSS file. The file will be placed in the same location as the rest of your CSS files. It is possible to edit the file directly from the backoffice as well. Access it from the **Code** tab in the top-right corner. -![Edit CSS file directly in the backoffice](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/rich-text-editor/images/rte-code-tab.png) +![Edit CSS file directly in the backoffice](../../built-in-property-editors/rich-text-editor/images/rte-code-tab.png) ## Using RTE Styles @@ -41,4 +41,4 @@ You can have as many different styles for your RTEs as you want. You might want When configuring your RTE Data Types, you can select which stylesheets your content editors should be able to use. -![Choose stylesheets on the Data Type](../../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/rich-text-editor/images/rte-choose-stylesheet.png) +![Choose stylesheets on the Data Type](../../built-in-property-editors/rich-text-editor/images/rte-choose-stylesheet.png) diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/slider.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/slider.md index 56e9c5ec491..3c7ca8ee7f7 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/slider.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/slider.md @@ -10,13 +10,13 @@ There are two flavors of the slider. One with a single value picker. One with a ## Data Type Definition Example -![Slider Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Slider-Data-Type-Definition-Example.png) +![Slider Data Type Definition](../built-in-property-editors/images/Slider-Data-Type-Definition-Example.png) ## Content Example -
+
-
+
## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/tags.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/tags.md index 9d24b5b013a..fb56ab8fce5 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/tags.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/tags.md @@ -8,7 +8,7 @@ The Tags property editor allows you to add multiple tags to a node. ## Data Type Definition Example -![Data Type Definition Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Tags-DataType-v10.png) +![Data Type Definition Example](../built-in-property-editors/images/Tags-DataType-v10.png) ### Tag group @@ -24,17 +24,17 @@ There are built-in property value converters, which means you don't need to worr ### CSV tags -![CSV tags example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Csv-example-v8.png) +![CSV tags example](../built-in-property-editors/images/Csv-example-v8.png) ### JSON tags -![JSON tags example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Json-example-v8.png) +![JSON tags example](../built-in-property-editors/images/Json-example-v8.png) ### Tags typeahead Whenever a tag has been added it will be visible in the typeahead when you start typing on other pages. -![Tags typeahead example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Typeahead-v8.png) +![Tags typeahead example](../built-in-property-editors/images/Typeahead-v8.png) ## MVC View Example - displays a list of tags diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textarea.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textarea.md index 4fbffd30d48..e2c479fcb60 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textarea.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textarea.md @@ -10,11 +10,11 @@ Textarea is an HTML textarea control for multiple lines of text. It can be confi ### Without a character limit -![Textarea Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textarea-Setup-v10.png) +![Textarea Data Type Definition](../built-in-property-editors/images/Textarea-Setup-v10.png) ### With a character limit -![Textarea Data Type Definition With Limits](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textarea-Setup-Limit-v8.png) +![Textarea Data Type Definition With Limits](../built-in-property-editors/images/Textarea-Setup-Limit-v8.png) ## Settings @@ -22,11 +22,11 @@ Textarea is an HTML textarea control for multiple lines of text. It can be confi ### Without a character and rows limit -![Textarea Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textarea-Content-v8.png) +![Textarea Content Example](../built-in-property-editors/images/Textarea-Content-v8.png) ### With a character limit and rows limit -![Textbox Content Example With Limits](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textarea-Content-Limit-v8.png) +![Textbox Content Example With Limits](../built-in-property-editors/images/Textarea-Content-Limit-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textbox.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textbox.md index e346497a651..bf7359ce7b7 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textbox.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/textbox.md @@ -12,17 +12,17 @@ Textbox is an HTML input control for text. It can be configured to have a fixed ## Data Type Definition Example -![Textbox Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textbox-Setup-v10.png) +![Textbox Data Type Definition](../built-in-property-editors/images/Textbox-Setup-v10.png) ## Content Example ### Without a character limit -![Textbox Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textbox-Content-v8.png) +![Textbox Content Example](../built-in-property-editors/images/Textbox-Content-v8.png) ### With a character limit -![Textbox Content Example Without a Character Limit](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Textbox-Content-Limit-v8.png) +![Textbox Content Example Without a Character Limit](../built-in-property-editors/images/Textbox-Content-Limit-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/true-false.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/true-false.md index 10672412c65..02ffbc9ac18 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/true-false.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/true-false.md @@ -6,7 +6,7 @@ Toggle is a standard checkbox which saves either 0 or 1, depending on the checkb ## Data Type Definition Example -![True/False Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Checkbox-Data-Type-v10.png) +![True/False Data Type Definition](../built-in-property-editors/images/Checkbox-Data-Type-v10.png) The Toggle property has a setting which allows you to set the default value of the checkbox, either checked (true) or unchecked (false). @@ -14,7 +14,7 @@ It is also possible to define a label, that will be displayed next to the checkb ## Content Example -![No Edit Content Example](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/Checkbox-Content.png) +![No Edit Content Example](../built-in-property-editors/images/Checkbox-Content.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/user-picker.md b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/user-picker.md index 3a854156332..003b6c22df7 100644 --- a/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/user-picker.md +++ b/13/umbraco-cms/fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/user-picker.md @@ -8,11 +8,11 @@ The user picker opens a panel to pick a specific user from the Users section. Th ## Data Type Definition Example -![Media Picker Data Type Definition](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/User-Picker-DataType-v8.png) +![Media Picker Data Type Definition](../built-in-property-editors/images/User-Picker-DataType-v8.png) ## Content Example -![Member Picker Content](../../../../../../10/umbraco-cms/fundamentals/backoffice/property-editors/built-in-property-editors/images/User-Picker-Content-v8.png) +![Member Picker Content](../built-in-property-editors/images/User-Picker-Content-v8.png) ## MVC View Example diff --git a/13/umbraco-cms/fundamentals/backoffice/variants.md b/13/umbraco-cms/fundamentals/backoffice/variants.md index 0628da4aba0..fb0bd3a2e61 100644 --- a/13/umbraco-cms/fundamentals/backoffice/variants.md +++ b/13/umbraco-cms/fundamentals/backoffice/variants.md @@ -30,7 +30,7 @@ How to use Language Variants in Umbraco To work with Language Variants you need to have more than one language enabled. This can be done from the `Settings` section: -![Adding a language](../../../../10/umbraco-cms/fundamentals/backoffice/images/languages\_v10.png) +![Adding a language](images/languages_v10.png) {% hint style="info" %} You will always have one default language but each language can be set to mandatory. @@ -44,11 +44,11 @@ Now that there are two languages to vary the content with, it needs to be enable 2. Open the **Permissions** page. 3. Toggle **Allow vary by culture**. -
+
To allow a property on the Document Type to be varied it will have to be enabled for the property: -![Allowing variance on properties](../../../../10/umbraco-cms/fundamentals/backoffice/images/varying-properties\_v10.png) +![Allowing variance on properties](images/varying-properties_v10.png) ## Working with Language Variants on content @@ -57,11 +57,11 @@ When you return to your content node you will notice two things: 1. At the top of the Content tree there will now be a dropdown so you can show the Content tree in the language of your choice. 2. To the right of the content name there is now a dropdown where you can select a language. You can also open a split view so you can see two languages at once. - ![Allowing variance on properties](../../../../10/umbraco-cms/fundamentals/backoffice/images/varying-content\_v10.png) + ![Allowing variance on properties](images/varying-content_v10.png) Each Property Editor that does not allow variants (an Invariant Property) will by default need to be unlocked in order to be edited. The lock exists to make it clear that this change will affect more languages. Since the value of the invariant properties are shared between all variants on the website. -![How an invariant property looks when it is locked](../../../../10/umbraco-cms/fundamentals/backoffice/images/invariant-property-locked.png) +![How an invariant property looks when it is locked](images/invariant-property-locked.png) {% hint style="info" %} Whether or not the lock is enabled on the invariant properties depends on the `AllowEditInvariantFromNonDefault` setting in the `appsettings.json` file. @@ -92,7 +92,7 @@ This can be controlled on a User Group level. All default User Groups, except th When "Allow access to all languages" is not checked, languages can be added and/or removed. This is to determine which variants the users in the user group have access to. -![Assign access to all or individual languages on th User Group](../../../../10/umbraco-cms/fundamentals/backoffice/images/Assign-Access-Languages.png) +![Assign access to all or individual languages on th User Group](images/Assign-Access-Languages.png) {% hint style="info" %} Even though the language permissions have been set, a user will still be able to view and browse all the language variations. The permission setting will ensure that only the added languages are editable by users of the User Group. diff --git a/13/umbraco-cms/fundamentals/code/debugging/README.md b/13/umbraco-cms/fundamentals/code/debugging/README.md index 317cc2df3dd..79b80950bd7 100644 --- a/13/umbraco-cms/fundamentals/code/debugging/README.md +++ b/13/umbraco-cms/fundamentals/code/debugging/README.md @@ -56,17 +56,17 @@ To display the profiler ensure that the configuration `Umbraco:CMS:Hosting:Debug Also, ensure your template calls `@Html.RenderProfiler()` as one of the last things. -
+
If you click 'Show Trivial' you can seen the kind of detail the MiniProfiler makes available to you about the execution path of your page: -
+
and any underlying SQL Statements that are being executed for a part of the execution: -
+
-![Underlying SQL query details](../../../../../10/umbraco-cms/fundamentals/code/debugging/images/v8-miniprofiler-sql-details.png) +![Underlying SQL query details](images/v8-miniprofiler-sql-details.png) ### Writing to the MiniProfiler @@ -113,7 +113,7 @@ public class RootController : RenderController and now in the profiler you can see: -![Show Trivial](../../../../../10/umbraco-cms/fundamentals/code/debugging/images/v8-miniprofiler-write.png) +![Show Trivial](images/v8-miniprofiler-write.png) ## Umbraco Productivity Tool - Chrome Extension @@ -121,7 +121,7 @@ If you are using the Google Chrome browser you can install this [Umbraco Product This will allow you to quickly switch between debugging with the MiniProfiler, Trace viewer and normal mode. -![Umbraco Productivity Tool](../../../../../10/umbraco-cms/fundamentals/code/debugging/images/chrome-tool.png) +![Umbraco Productivity Tool](images/chrome-tool.png) ## [Logging](logging.md) diff --git a/13/umbraco-cms/fundamentals/code/source-control.md b/13/umbraco-cms/fundamentals/code/source-control.md index 226242e7641..bd3d5c91ee5 100644 --- a/13/umbraco-cms/fundamentals/code/source-control.md +++ b/13/umbraco-cms/fundamentals/code/source-control.md @@ -57,7 +57,7 @@ For most projects, this gitignore will be enough, and this article will not be a However, we will go through the different files in order to give you an insight into the anatomy of an Umbraco website and therefore which parts to include in version control and which parts not to. -![Typical set of Umbraco Project Folders](../../../../10/umbraco-cms/fundamentals/code/images/file-structure-v10.png) +![Typical set of Umbraco Project Folders](images/file-structure-v10.png) #### The Umbraco Folder diff --git a/13/umbraco-cms/fundamentals/data/adding-tabs.md b/13/umbraco-cms/fundamentals/data/adding-tabs.md index e835ad495e2..6f176fc7804 100644 --- a/13/umbraco-cms/fundamentals/data/adding-tabs.md +++ b/13/umbraco-cms/fundamentals/data/adding-tabs.md @@ -13,7 +13,7 @@ To add a tab, follow these steps: 1. Go to **Settings**. 2. Create or select a **Document Type/Media Type/Member Type** and click **Add tab**. - ![Add tab](../../../../10/umbraco-cms/fundamentals/data/images/Add-tab.png) + ![Add tab](images/Add-tab.png) {% hint style="info" %} When adding the first tab, all existing groups are automatically added to the tab. @@ -30,7 +30,7 @@ To reorder tabs, follow these steps: This is important when using compositions, as you want to always display a tab/group at a certain position by setting a manual numeric value. - ![Reorder tabs](../../../../10/umbraco-cms/fundamentals/data/images/Reorder-tabs.gif) + ![Reorder tabs](images/Reorder-tabs.gif) 5. Select **I am done reordering**. 6. Click **Save**. @@ -53,7 +53,7 @@ Converting a tab back into a group is not possible, as tabs can contain groups, Once you start adding tabs, you might see a “Generic” tab appear. This is done to hold groups and properties that are not assigned to a tab. For example, a group of properties coming from a composition that has no tab. In order to display the groups and properties correctly and have a solid data structure, they will be displayed under the “Generic” tab. -![Generic tab](../../../../10/umbraco-cms/fundamentals/data/images/Generic-tab.png) +![Generic tab](images/Generic-tab.png) To manage the **Generic** tab on a **Document Type/Media Type**: @@ -61,4 +61,4 @@ To manage the **Generic** tab on a **Document Type/Media Type**: 2. Click **Add tab** and enter the **Name** for the tab. All existing groups and properties are added to the tab. 3. Go to the **Document Type/Media Type**, the **Generic** tab will now be replaced by the tab from the composition. - ![Composition Add Tab](../../../../10/umbraco-cms/fundamentals/data/images/Composition-add-tab.gif) + ![Composition Add Tab](images/Composition-add-tab.gif) diff --git a/13/umbraco-cms/fundamentals/data/content-version-cleanup.md b/13/umbraco-cms/fundamentals/data/content-version-cleanup.md index 508abbcb778..ca33cc657a4 100644 --- a/13/umbraco-cms/fundamentals/data/content-version-cleanup.md +++ b/13/umbraco-cms/fundamentals/data/content-version-cleanup.md @@ -50,7 +50,7 @@ It is worth noting that whilst we delete rows, we do not shrink database files o It is possible to override the global settings per Document Type in the backoffice to prevent unwanted cleanup. This can be managed in the "permissions" Content App for each Document Type. -![Content Version Cleanup - Document Type overrides](../../../../10/umbraco-cms/fundamentals/data/images/per-doctype-override.png) +![Content Version Cleanup - Document Type overrides](images/per-doctype-override.png) ## Prevent cleanup of important versions @@ -58,7 +58,7 @@ It is possible to mark important content versions as "prevent cleanup" to ensure 1. Open rollback modal. -
+
2. Click **Prevent cleanup** button for each important version. -
+
diff --git a/13/umbraco-cms/fundamentals/data/creating-media/README.md b/13/umbraco-cms/fundamentals/data/creating-media/README.md index 9a1c8ab0465..37df7b48cc8 100644 --- a/13/umbraco-cms/fundamentals/data/creating-media/README.md +++ b/13/umbraco-cms/fundamentals/data/creating-media/README.md @@ -37,13 +37,13 @@ From the **Media** section in the Umbraco backoffice, you can add new media item * The Media item will be created based on the type you choose. * Upload the image or file, give the Media item a name, and click **Save**. -![Upload Media - Create Button](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/v9-media-types-upload-media.png) +![Upload Media - Create Button](images/v9-media-types-upload-media.png) * Use the Drag and drop feature to add your files to the Media section. * Umbraco will automatically detect the Media Type and create the Media item. * You can drop entire folder structures to recreate that same structure in the Media section. -![Upload Media - Media section](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/v9-media-types-media-section.png) +![Upload Media - Media section](images/v9-media-types-media-section.png) ### Add media through the Content section @@ -52,11 +52,11 @@ New media items can be added to your site without interrupting the content creat * Drag and drop the image(s) from your file explorer directly into the Media Picker property on the Content page. * Images added this way is automatically added to the user's start node in the Media section of the Umbraco backoffice. -![Drag and drop images directly into the content](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/upload-images-from-content.gif) +![Drag and drop images directly into the content](images/upload-images-from-content.gif) * Select the "+" icon to open the "Select media" dialog where you can add images from your file explorer directly or using drag and drop. -![Add images from the "Select media" dialog](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/add-image-from-dialog.gif) +![Add images from the "Select media" dialog](images/add-image-from-dialog.gif) ## Creating a folder @@ -88,7 +88,7 @@ By selecting multiple media items it is possible to perform bulk operations like To edit properties on a single media item, click the name of the item, which you will see once you hover over the item. -![Edit media item](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/hover-over.png) +![Edit media item](images/hover-over.png) From the top-right corner of the Media section, you can toggle between list and grid view. There is also an option to search for the items in the Media section. @@ -120,7 +120,7 @@ A Media Type is created in the **Settings** section using the Media Type editor. You will now see the Media Type editor. It is similar to the editor used for creating Document Types. -![Creating a Media Type](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/create-new-media-type\_new.png) +![Creating a Media Type](images/create-new-media-type_new.png) {% hint style="info" %} Having different folders for different Media Types makes it possible to restrict where media items can be created and added. Only allowing PDF uploads in a certain folder and employee images in another make it easier to keep the Media section organized. @@ -153,13 +153,13 @@ Follow the steps outlined below to add the properties to the Media Type: 6. Rename the editor _Employee Image Cropper_. 7. Add two new crops called _Thumbnail_ (200px x 350px) and _wideThumbnail_ (350px x 200px). -![Defining crops](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/new-data-type\_new.png) +![Defining crops](images/new-data-type_new.png) Name the remaining four properties _Width_, _Height_, _Size_, and _Type_, and give them the aliases as mentioned above. They should all use the **Label** editor. As mentioned before these properties will automatically be populated once an image has been uploaded. -![Adding properties](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/finished-new-media-type\_new.png) +![Adding properties](images/finished-new-media-type_new.png) ## Defining a Media Type folder @@ -171,7 +171,7 @@ Next up, we will create a folder to hold the employee images. We could use the e 4. Navigate to the **List view** tab. 5. Toggle the **Enable list view** option. -![Enable List View](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/toggle-listview.png) +![Enable List View](images/toggle-listview.png) The new folder should be allowed to be created in the root of the Media tree. We also need to allow only the Employee Image Media Type in our new folder. Both of these configurations can be set on the **Permissions** tab. @@ -180,7 +180,7 @@ The new folder should be allowed to be created in the root of the Media tree. We 3. Click **Add child** under **Employee Images**. 4. Select **Employee Image**. -![Permissions](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/select-child-nodes.png) +![Permissions](images/select-child-nodes.png) ### Creating the folder and media items @@ -190,7 +190,7 @@ The new folder should be allowed to be created in the root of the Media tree. We There are four options to add new media items to the folder, as you can see here: -![Uploading Media](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/four-ways-of-uploading.png) +![Uploading Media](images/four-ways-of-uploading.png) {% hint style="info" %} Uncheck the **Allow at root** option on the **Employee Images** Media Type to prevent the creation of multiple folders of this type. This will only disable the creation of new ones and not affect existing folders. diff --git a/13/umbraco-cms/fundamentals/data/creating-media/default-media-types.md b/13/umbraco-cms/fundamentals/data/creating-media/default-media-types.md index e768db5ad23..ceb277862a1 100644 --- a/13/umbraco-cms/fundamentals/data/creating-media/default-media-types.md +++ b/13/umbraco-cms/fundamentals/data/creating-media/default-media-types.md @@ -48,7 +48,7 @@ The `UmbracoMediaArticle` media type has the following properties: * `umbracoExtension` - Label (string) * `umbracoBytes` - Label (bigint) -![MediaArticle](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/umbraco-media-article-media-type.png) +![MediaArticle](images/umbraco-media-article-media-type.png) ### UmbracoMediaAudio @@ -58,7 +58,7 @@ The `UmbracoMediaAudio` media type has the following properties: * `umbracoExtension` Label (string) * `umbracoBytes` Label (bigint) -![MediaAudio](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/umbraco-media-audio-media-type.png) +![MediaAudio](images/umbraco-media-audio-media-type.png) ### UmbracoMediaVectorGraphics @@ -68,7 +68,7 @@ The `UmbracoMediaVectorGraphics` media type has the following properties: * `umbracoExtension` Label (string) * `umbracoBytes` Label (bigint) -![MediaVectorGraphics](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/umbraco-media-vector-graphicsmedia-type.png) +![MediaVectorGraphics](images/umbraco-media-vector-graphicsmedia-type.png) ### UmbracoMediaVideo @@ -78,7 +78,7 @@ The `UmbracoMediaVideo` media type has the following properties: * `umbracoExtension` - Label (string) * `umbracoBytes` - Label (bigint) -![MediaVideo](../../../../../10/umbraco-cms/fundamentals/data/creating-media/images/umbraco-media-video-media-type.png) +![MediaVideo](images/umbraco-media-video-media-type.png) {% hint style="info" %} You can also create localization files for Media Types. You can read more about this in the [Document Type Localization](../defining-content/document-type-localization.md) article. diff --git a/13/umbraco-cms/fundamentals/data/data-types/README.md b/13/umbraco-cms/fundamentals/data/data-types/README.md index fedf316c6c0..13dc0f53d8d 100644 --- a/13/umbraco-cms/fundamentals/data/data-types/README.md +++ b/13/umbraco-cms/fundamentals/data/data-types/README.md @@ -18,7 +18,7 @@ An example of this could be to have two dropdown Data Types both referencing the To create a new Data Type, go to the **Settings** section within the backoffice. Thereafter click the menu icon to the right of the **Data Types** folder and select **Create**->**New Data Type**. Name the Data Type - we'll call it _Dropdown Cities_. -![Dropdown List](../../../../../10/umbraco-cms/fundamentals/data/data-types/images/creating-a-data-type-v10.png) +![Dropdown List](images/creating-a-data-type-v10.png) * **Property Editor:** This is where you pick the Property Editor that our _Dropdown Cities_ Data Type will be referencing. Pick the **Dropdown** and now you will see the configuration options that are available for a Data Type referencing the Dropdown Property Editor. * **Enable multiple choice:** By enabling this it will be possible to select multiple options from the dropdown. @@ -36,7 +36,7 @@ Besides the Data Types that are available out of the box there are some addition To view the Data Type reference, go to the **Settings** section and expand the **Data Types** folder. Select the **Data Type** you wish to view the reference for and click the **Info** tab. -![Content Picker References](../../../../../10/umbraco-cms/fundamentals/data/data-types/images/viewing-data-type-reference.png) +![Content Picker References](images/viewing-data-type-reference.png) This gives you an overview of the Types that currently use the Data Type. diff --git a/13/umbraco-cms/fundamentals/data/data-types/default-data-types.md b/13/umbraco-cms/fundamentals/data/data-types/default-data-types.md index 438982e04d1..3909bb46f89 100644 --- a/13/umbraco-cms/fundamentals/data/data-types/default-data-types.md +++ b/13/umbraco-cms/fundamentals/data/data-types/default-data-types.md @@ -6,7 +6,7 @@ description: Learn about the default data types in Umbraco. Here's a list of the default Data Types that come installed with Umbraco. There are plenty more that you can create based on the installed [Property Editors](../../backoffice/property-editors/). -![Umbraco 9 Data Type List](../../../../../10/umbraco-cms/fundamentals/data/data-types/images/default-data-types-9.png) +![Umbraco 9 Data Type List](images/default-data-types-9.png) ## Approved Color diff --git a/13/umbraco-cms/fundamentals/data/dictionary-items.md b/13/umbraco-cms/fundamentals/data/dictionary-items.md index c38ebc54af5..8a06beddf93 100644 --- a/13/umbraco-cms/fundamentals/data/dictionary-items.md +++ b/13/umbraco-cms/fundamentals/data/dictionary-items.md @@ -8,7 +8,7 @@ Depending on how your site is set up, not all content is edited through the **Co Dictionary Items can be managed from the **Translation** section. Let's take a look at an example. In this example, we will translate "Welcome to Umbraco" from within the template and add it to the dictionary: -
+
## Adding a Dictionary Item @@ -18,11 +18,11 @@ To add a Dictionary Item: 2. Click on **Dictionary** in the **Translation** tree and select **Create**. 3. Enter the **Name** for the dictionary item. Let's say _Welcome_. -
+
4. Click **Create**. 5. Enter the values for the different language versions. -
+
6. Click **Save**. ### Grouping Dictionary Items @@ -38,7 +38,7 @@ To group dictionary items: 7. Click **Create**. 8. Enter the values for the different language versions. -
+
9. Click **Save**. ## Editing Dictionary Items @@ -85,7 +85,7 @@ To fetch dictionary values in the template, replace the text with the following @Umbraco.GetDictionaryValue("Welcome") ``` -![Rendering dictionary item](../../../../10/umbraco-cms/fundamentals/data/images/rendering-dictionary-item.png) +![Rendering dictionary item](images/rendering-dictionary-item.png) Alternatively, you can specify an `altText` which will be returned if the dictionary value is empty. @@ -93,7 +93,7 @@ Alternatively, you can specify an `altText` which will be returned if the dictio @Umbraco.GetDictionaryValueOrDefault("Welcome", "Another amazing day in Umbraco") ``` -![Rendering dictionary item](../../../../10/umbraco-cms/fundamentals/data/images/rendering-altvalue-dictionary-item.png) +![Rendering dictionary item](images/rendering-altvalue-dictionary-item.png) ## Importing and exporting Dictionary Items @@ -110,7 +110,7 @@ In some cases, you might want to use the same Dictionary Items on multiple Umbra This will download a `.udt` file which you can use to import the Dictionary items on another Umbraco website. -![Right-click the Dictionary Item to open the options menu with the Export feature](../../../../10/umbraco-cms/fundamentals/data/images/export.png) +![Right-click the Dictionary Item to open the options menu with the Export feature](images/export.png) ### Importing Dictionary Items @@ -126,7 +126,7 @@ This will download a `.udt` file which you can use to import the Dictionary item The Dictionary Items have now been added to your website. -![Review the Dictionary Items for import before confirming](../../../../10/umbraco-cms/fundamentals/data/images/import.png) +![Review the Dictionary Items for import before confirming](images/import.png) ## Using Dictionary Item in a Multilingual website diff --git a/13/umbraco-cms/fundamentals/data/relations.md b/13/umbraco-cms/fundamentals/data/relations.md index 22ac9052350..4058d9c9e64 100644 --- a/13/umbraco-cms/fundamentals/data/relations.md +++ b/13/umbraco-cms/fundamentals/data/relations.md @@ -6,7 +6,7 @@ description: What are relations, how to create and manage them Umbraco sections are built around the concept of 'trees' and there is an implicit relationship between items in a section tree. -![Parent, Siblings & Children](../../../../10/umbraco-cms/fundamentals/data/images/parent-siblings-children.png) +![Parent, Siblings & Children](images/parent-siblings-children.png) We refer to these relationships in the manner of a 'Family Tree' - eg, One content item might be the 'Parent' of some content items, and those content items would be referred to as the 'Children' of that parent. Items within the same branch of the tree can also be described as 'Ancestors' or 'Descendants' of an item, depending if they are above or below them in the depth of the tree. @@ -36,15 +36,15 @@ To create and use Relations in your Umbraco Website, you need to define a 'Relat Navigate to the **Settings** section in the Umbraco backoffice and you'll find the **Relation Types** folder in the Settings tree. -![Relation Types Tree](../../../../10/umbraco-cms/fundamentals/data/images/relation-types-tree.png) +![Relation Types Tree](images/relation-types-tree.png) If you expand the Relation Type tree, you can see that Umbraco 'ships' with some default Relation Types. These are used by the Umbraco backoffice to help deliver some key backoffice functionality: -![Default Relation Types](../../../../10/umbraco-cms/fundamentals/data/images/default-relation-types.png) +![Default Relation Types](images/default-relation-types.png) For example, there is a Relation Type that tracks when Media is picked in Content to be able to provide the functionality of warning an editor if they try to delete a Media Item that it is 'in use'. There is a Relation Type, to help 'restore' deleted content back to the place it was deleted from in the Recycle Bin. -![Create Relation Type](../../../../10/umbraco-cms/fundamentals/data/images/create-relation-type.png) +![Create Relation Type](images/create-relation-type.png) To create your new Relation Type, follow these steps: @@ -60,17 +60,17 @@ To create your new Relation Type, follow these steps: Example: For relating Members to their uploaded Images, we might create a 'Member Images' relation - ![Member Images](../../../../10/umbraco-cms/fundamentals/data/images/member-images.png) + ![Member Images](images/member-images.png) 6. Select **Is Dependency** as **Yes** if you wish this Relation Type to be used in Umbraco's 'tracking' functionality; that warns editors when trying to delete entities if they are 'used' in a Relation Type marked as 'Is Dependency' 7. Click **Create** and you'll see your new Relation Type created in the Relation Types folder. You can see the 'Alias' that you'll need to make note of when working with Relations. - ![Member Images](../../../../10/umbraco-cms/fundamentals/data/images/relation-alias.png) + ![Member Images](images/relation-alias.png) ## Viewing Relations To view one of the existing Relation Types, go to the **Relations** tab. It displays a long list of all the objects that have been related for this specific Relation Type. -![View Relations](../../../../10/umbraco-cms/fundamentals/data/images/view-relations.png) +![View Relations](images/view-relations.png) ## Creating Relations diff --git a/13/umbraco-cms/fundamentals/data/scheduled-publishing.md b/13/umbraco-cms/fundamentals/data/scheduled-publishing.md index 627f8fc1763..86808259fb5 100644 --- a/13/umbraco-cms/fundamentals/data/scheduled-publishing.md +++ b/13/umbraco-cms/fundamentals/data/scheduled-publishing.md @@ -10,17 +10,17 @@ Each document in Umbraco can be scheduled for publishing and unpublishing on a p You can find the options to do this click on the arrow next to the **Save and publish** button and pick **Schedule...** -![Scheduled publishing](../../../../10/umbraco-cms/fundamentals/data/images/schedule.png) +![Scheduled publishing](images/schedule.png) This will open a **Schedule Publishing** dialog where you can specify dates and time. -![Scheduled publishing](../../../../10/umbraco-cms/fundamentals/data/images/scheduled-publishing-8.png) +![Scheduled publishing](images/scheduled-publishing-8.png) ## Timezones Your server may be in a different timezone than where you are located. You are able to select a date and time in your timezone and Umbraco will make sure that the item gets published at that time. So, if you select 12PM then the item will be published at 12PM in the timezone you are in. This may be 8PM on the server, which is indicated when you select the date and time. -![Scheduled publishing](../../../../10/umbraco-cms/fundamentals/data/images/Publish-Timezone-Difference.jpg) +![Scheduled publishing](images/Publish-Timezone-Difference.jpg) If you are in the same timezone as the server, this message will not appear under the date picker. diff --git a/13/umbraco-cms/fundamentals/data/users.md b/13/umbraco-cms/fundamentals/data/users.md index c9641a42c0e..7a33f8fd2b7 100644 --- a/13/umbraco-cms/fundamentals/data/users.md +++ b/13/umbraco-cms/fundamentals/data/users.md @@ -46,13 +46,13 @@ You can also create your own custom User Groups and add properties and tabs as y Go to the **Users** section and select the **Groups** tab in the top-right corner. -![User Groups Tab](../../../../10/umbraco-cms/fundamentals/data/images/user-groups.png) +![User Groups Tab](images/user-groups.png) Select **Create group** and you will be taken to the **User Group** editor. Here you can define and edit the User Group through custom settings and properties. ### User Group Parameters -![Create User Group](../../../../10/umbraco-cms/fundamentals/data/images/create-user-group.png) +![Create User Group](images/create-user-group.png) Shows basic information about the User Group and settings for custom properties. @@ -69,7 +69,7 @@ Depending on which User Group a user is added to, each user has a set of permiss The available user permissions are defined under **Default Permissions** in the User group. -![Default permissions](../../../../10/umbraco-cms/fundamentals/data/images/default-permissions.png) +![Default permissions](images/default-permissions.png) ### Setting User Permissions diff --git a/13/umbraco-cms/fundamentals/design/partial-view-macro-files.md b/13/umbraco-cms/fundamentals/design/partial-view-macro-files.md index 0605a545123..0260c537233 100644 --- a/13/umbraco-cms/fundamentals/design/partial-view-macro-files.md +++ b/13/umbraco-cms/fundamentals/design/partial-view-macro-files.md @@ -14,7 +14,7 @@ A Macro is a reusable piece of functionality with some configuration options in You can create and edit Partial View Macro Files in the **Partial View Macro Files** folder from the **Settings** section of the Backoffice. -![Creating a new partial view macro file](../../../../10/umbraco-cms/fundamentals/design/images/creating-partial-view-macro-files.png) +![Creating a new partial view macro file](images/creating-partial-view-macro-files.png) In the **Create** menu, there are four options available: @@ -27,7 +27,7 @@ In the **Create** menu, there are four options available: To create a Partial View Macro File, go to the **Settings** section in the Umbraco backoffice and right-click the **Partial View Macro Files** folder. Choose **Create**. Select **New partial view macro** and enter a Partial View Macro Filename. Enter the macro logic and click the **Save** button. You will now see the Partial View Macro File in the **Partial View Macro Files** folder. You also see the macro in the **Macros** folder in the Backoffice. -![Created partial view](../../../../10/umbraco-cms/fundamentals/design/images/created-partial-view-macro-file.png) +![Created partial view](images/created-partial-view-macro-file.png) By default, the Partial View Macro File is saved in the `Views/MacroPartials` folder. @@ -35,7 +35,7 @@ By default, the Partial View Macro File is saved in the `Views/MacroPartials` fo To create a Partial View Macro File without a macro, go to the **Settings** section in the Umbraco backoffice. Click right on the **Partial View Macro Files** folder. Choose **Create**. Select **New partial view macro (without macro)** and enter a Partial View Macro Filename. Enter the macro logic and click the **Save** button. You will now see _only_ the Partial View Macro File in the **Partial View Macro Files** folder in the Backoffice. -![Created partial view](../../../../10/umbraco-cms/fundamentals/design/images/created-partial-view-macro-file-without-macro.png) +![Created partial view](images/created-partial-view-macro-file-without-macro.png) By default, the Partial View Macro File is saved in the `Views/MacroPartials` folder. @@ -43,7 +43,7 @@ By default, the Partial View Macro File is saved in the `Views/MacroPartials` fo To create a Partial View Macro File from the snippet, go to the **Settings** section in the Umbraco backoffice. Click right on the **Partial Views Macro Files** folder. Choose **Create**. Select **New empty partial view macro from snippet**. Select the snippet you want to create a partial view for and enter a Partial View Macro Filename. The code snippet you selected is displayed in the backoffice editor. Click the **Save** button. You will now see the Partial View Macro File in the **Partial View Macro Files** folder. You also see the macro in the **Macros** folder in the Backoffice. -![Created partial view from snippet](../../../../10/umbraco-cms/fundamentals/design/images/created-partial-view-macro-file-from-snippet.png) +![Created partial view from snippet](images/created-partial-view-macro-file-from-snippet.png) By default, the partial view is saved in the `Views/MacroPartials` folder. Umbraco provides the following partial view macro snippets: @@ -72,7 +72,7 @@ By default, the partial view is saved in the `Views/MacroPartials` folder. Umbra To create a folder, go to the **Settings** section in the Umbraco backoffice and right-click the **Partial Views Macro Files** folder. Choose **Create** and select **Folder**. Enter a folder name and click the **Create** button. -![Created folder](../../../../10/umbraco-cms/fundamentals/design/images/folder.png) +![Created folder](images/folder.png) ## Rendering a Partial View Macro File From 3c8534e69192d8e4aca8f368d18d5de9411fb28f Mon Sep 17 00:00:00 2001 From: Esha Noronha Date: Fri, 17 Oct 2025 09:30:58 +0200 Subject: [PATCH 2/3] Fixes broken links --- 13/umbraco-cms/extending/ui-library.md | 2 +- 13/umbraco-cms/fundamentals/code/source-control.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/13/umbraco-cms/extending/ui-library.md b/13/umbraco-cms/extending/ui-library.md index 5ea8cf1107b..81caff86701 100644 --- a/13/umbraco-cms/extending/ui-library.md +++ b/13/umbraco-cms/extending/ui-library.md @@ -24,7 +24,7 @@ You can also change the stylesheet of custom properties to see how the component ## Installing the UI Library Components -You can download the UI Library package from [GitHub](https://github.com/umbraco/Umbraco.UI/tree/v1/contrib/packages). +You can download the UI Library package from [GitHub](https://github.com/umbraco/Umbraco.UI). If you are installing a component via npm, there are two ways to import it: diff --git a/13/umbraco-cms/fundamentals/code/source-control.md b/13/umbraco-cms/fundamentals/code/source-control.md index bd3d5c91ee5..1813b1b7910 100644 --- a/13/umbraco-cms/fundamentals/code/source-control.md +++ b/13/umbraco-cms/fundamentals/code/source-control.md @@ -8,7 +8,7 @@ description: >- ## Umbraco Cloud -When you are running your site on Umbraco Cloud, source control is a part of the experience. Have a look at the ['Technical overview of an Umbraco Cloud Environment'](https://docs.umbraco.com/umbraco-cloud/getting-started/environments) and the information on ['Working with your Umbraco Cloud project'](https://docs.umbraco.com/umbraco-cloud/setup/set-up#working-with-your-umbraco-cloud-project) for a steer on Source/Version Control good practices. +When you are running your site on Umbraco Cloud, source control is a part of the experience. Have a look at the [Technical overview of an Umbraco Cloud Environment](https://docs.umbraco.com/umbraco-cloud/begin-your-cloud-journey/project-features/environments). Additionally, see the information on [Repositories in a Cloud Project](https://docs.umbraco.com/umbraco-cloud/explore-umbraco-cloud/technology-overview/repositories-in-a-cloud-project) for Source/Version Control good practices. ## Outside of Umbraco Cloud From 73115afb9deb298326bd33b6f2e1c4c05e5da610 Mon Sep 17 00:00:00 2001 From: Esha Noronha <82437098+eshanrnh@users.noreply.github.com> Date: Fri, 17 Oct 2025 09:34:37 +0200 Subject: [PATCH 3/3] Apply suggestion from @eshanrnh --- 13/umbraco-cms/extending/packages/creating-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/13/umbraco-cms/extending/packages/creating-a-package.md b/13/umbraco-cms/extending/packages/creating-a-package.md index dfe76f29e79..95863fa3721 100644 --- a/13/umbraco-cms/extending/packages/creating-a-package.md +++ b/13/umbraco-cms/extending/packages/creating-a-package.md @@ -98,7 +98,7 @@ The outcome is the files generated below: ![Content of an empty package](images/empty-package-from-template.png) -Apart from the project file, you can find an empty `package.manifest` inside the **App_Plugins** folder, which we will replace with the one created from the [Creating a Custom Dashboard Tutorial](../../tutorials/creating-a-custom-dashboard/). But more importantly, it also contains a `build/CustomWelcomeDashboard.targets` file. +Apart from the project file, the **App_Plugins** folder includes an empty `package.manifest`, which is replaced with the one created in the [Creating a Custom Dashboard Tutorial](../../tutorials/creating-a-custom-dashboard/). More importantly, it also contains a `build/CustomWelcomeDashboard.targets` file. This file contains an `msbuild` target that is executed when a project has a dependency on this package. It copies the `App_Plugins` folder into the project on build. This is required for having Umbraco packages in a NuGet package format.