Skip to content

Commit

Permalink
Merge branch 'main' into UserPickerField
Browse files Browse the repository at this point in the history
  • Loading branch information
hyzx86 authored Mar 18, 2024
2 parents 52cc64b + f40fa29 commit cd0d788
Show file tree
Hide file tree
Showing 47 changed files with 213 additions and 19 deletions.
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,6 @@ Orchard Core consists of two distinct projects:
[![Documentation](https://readthedocs.org/projects/orchardcore/badge/)](https://docs.orchardcore.net/)
[![Crowdin](https://badges.crowdin.net/orchard-core/localized.svg)](https://crowdin.com/project/orchard-core)

## Local Communities

中文资源

[![Orchard Core CN 中文讨论组](https://docs.orchardcore.net/en/latest/docs/assets/images/orchard-core-cn-community-logo.png)](https://shang.qq.com/wpa/qunwpa?idkey=48721591a71ee7586316604a7a4ee99d26fd977c6120370a06585085a5936f62)

## Build Status

Stable (release/1.8.2):
Expand Down Expand Up @@ -57,6 +51,18 @@ Do you need some help with Orchard Core? Don't worry, there are ways to get help
- Did you find a bug or have a feature request? Open an issue [in the issue tracker](https://github.com/OrchardCMS/OrchardCore/issues).
- Do you have a question about how to do something with Orchard Core, or would like a second opinion on your code? Open [a discussion](https://github.com/OrchardCMS/OrchardCore/discussions).

## Get in Touch

- [X (Twitter)](https://twitter.com/orchardcms)
- [LinkedIn](https://www.linkedin.com/groups/13605669/)
- [Meta (Facebook)](https://www.facebook.com/groups/244928199422062/user/100063629920864)

## Local Communities

中文资源

[![Orchard Core CN 中文讨论组](https://docs.orchardcore.net/en/latest/docs/assets/images/orchard-core-cn-community-logo.png)](https://shang.qq.com/wpa/qunwpa?idkey=48721591a71ee7586316604a7a4ee99d26fd977c6120370a06585085a5936f62)

## Contributing

It's great that you're thinking about contributing to Orchard Core! You'd join [our wonderful community of contributors](https://docs.orchardcore.net/en/latest/docs/community/).
Expand Down
4 changes: 1 addition & 3 deletions src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,10 @@ Here is a more detailed [roadmap](https://github.com/OrchardCMS/OrchardCore/wiki
## Getting Started

- Clone the repository using the command `git clone https://github.com/OrchardCMS/OrchardCore.git` and checkout the `main` branch for the latest release, or the `dev` branch for the cutting-edge version.

- Watch the ASP.NET Community Standup video where Orchard Core was demonstrated: <https://www.youtube.com/watch?v=HeDjv3blBjQ&t=2246s&list=PL1rZQsJPBU2StolNg0aqvQswETPcYnNKL&index=24>

- Follow the samples on <https://github.com/OrchardCMS/OrchardCore.Samples> that will guide you on how to build **modular** and **multi-tenant** applications

- Follow the tutorial inside the [Training Demo Module](https://github.com/Lombiq/Orchard-Training-Demo-Module) to learn how to develop Orchard Core modules.
- Follow [Dojo Course 3 - the full Orchard Core tutorial](https://orcharddojo.net/orchard-training/dojo-course-3-the-full-orchard-core-tutorial).

### Command line

Expand Down
4 changes: 4 additions & 0 deletions src/docs/reference/core/Modules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,7 @@ The following configuration values are used by default for module embedded stati
"CacheControl": "public, max-age=2592000, s-maxage=31557600"
}
```

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/yMzqwvr6Lgo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 5 additions & 1 deletion src/docs/reference/core/Placement/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,10 @@ Our placement would look like this (note the `_Summary` suffix to ContentPart na

This setup would then show your template (e.g. `GalleryPart.cshtml` or `GalleryPart.Summary.cshtml`) where `DisplayAsync` was called.

## Video
## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/h0lZMQkUApo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/YR8QzyAEgo4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/pGLggL_T9jc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 6 additions & 0 deletions src/docs/reference/modules/AdminMenu/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,3 +211,9 @@ jquery.ui.sortable.js 1.10+
Copyright (c) 2010-2016 Manuele J Sarfatti and contributors
Licensed under the MIT License
<http://www.opensource.org/licenses/mit-license.php>

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/R_Z6gPoAfHE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/3w68lDwUzFQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2 changes: 2 additions & 0 deletions src/docs/reference/modules/AuditTrail/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ Orchard Core is built to be extended, and the Audit Trail module is no different

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/t28rnjYtlJc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/uMBN6TVhaMg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## CREDITS

### jsdiff
Expand Down
4 changes: 4 additions & 0 deletions src/docs/reference/modules/BackgroundTasks/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Background Tasks (`OrchardCore.BackgroundTasks`)

This module provides tools to manage background tasks. This includes an admin UI to show which background tasks are registered with the ability to enable and disable them.

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Rx11bdawew0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 6 additions & 0 deletions src/docs/reference/modules/ContentFields/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -368,3 +368,9 @@ and register `MyCustomTextFieldDisplayDriver` to resolve for only the custom edi
When registering a custom display mode or editor driver you must alter the registrations for existing drivers.
You should also take a dependency in your modules `Manifest.cs` on the module that the fields reside in.
This will make your modules `Startup.cs` run later, and allow your registrations to override the original modules.

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NDUjn5_KdEM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/bayT58i7DVY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/ContentLocalization/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,7 @@ The following configuration is used by default and can be customized:
}
}
```

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/cwKa1OA48-4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
8 changes: 8 additions & 0 deletions src/docs/reference/modules/ContentParts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,11 @@ Orchard Core allows you to add Parts to a content type.
| [`ReCaptcha`](../../modules/ReCaptcha/README.md) | Allows you to add a ReCaptcha. |
| [`SeoMeta`](../../modules/Seo/README.md) | Allows you to configure SEO meta tags. |
| [`AuditTrail`](../../modules/AuditTrail/README.md) | Allows you to add a comment describing the changes of a content item, to be recorded to the Audit Trail. |

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/bayT58i7DVY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/zp1veioH1CQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Wjizx4XU2V4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/ContentPreview/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ A `Preview` button is available in the action buttons when you create or edit a

Copyright 2006, 2015 Klaus Hartl & Fagner Brack
Released under the MIT license

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NDUjn5_KdEM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 6 additions & 0 deletions src/docs/reference/modules/ContentTypes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,3 +212,9 @@ public class ProductController : Controller
}
}
```

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NDUjn5_KdEM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/bayT58i7DVY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Deployment.Remote/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Remote Deployment (`OrchardCore.Deployment.Remote`)

Provides the ability to export and import to and from a remote server via [Deployment](../Deployment/README.md). This way, you can move your content and configuration between remote Orchard Core sites.

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/2c5pbXuJJb0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 3 additions & 1 deletion src/docs/reference/modules/Deployment/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

Provides features to move content and configuration between Orchard Core sites via [Recipes](../Recipes/README.md). Also see [Remote Deployment](../Deployment.Remote/README.md).

## Video
## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/wBWa28iHWHI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/2c5pbXuJJb0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/DynamicCache/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,3 +226,7 @@ Each item that is displayed by the query will now add its own cache dependency t

!!! note
This has been renamed from `<cache>` to `<dynamic-cache>` to prevent collisions with the ASP.NET Core cache tag helper.

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Fx2e-Sy9FF8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Email/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,7 @@ After configuring a provider, you may test it by visiting `Configuration` → `S
## Events

You can easily monitor various events triggered during the message-sending process by either implementing the `IEmailServiceEvents` or inheriting from `EmailServiceEventsBase` base class, then registering your service.

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/FmgZHpFHCcg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Flow/BagPart.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,7 @@ The name of a BagPart is used as the differentiator in `placement.json`
}
]
```

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/JYES1i6BdWs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 5 additions & 1 deletion src/docs/reference/modules/Flow/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ And if you'd like to use the same template for Flow parts that have items and Fl
]
```

## Video
## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/ufEhMXYZPy4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/9gARrrvoAY4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/JYES1i6BdWs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Forms/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,3 +219,7 @@ The final workflow should look like this:

Implementing a workflow that handles form submissions is easy, but the workflow becomes big quite quickly as soon as you start adding validation logic to the mix. In the next version of the Forms module, there will be an easier way to validate Form submissions in combination with the Form widget. The Form widget will contain all of the validation settings, and there will be a single workflow activity that validates the submitted values against those settings.
The low-level validation activities will remain part of the toolbox to support workflow validation for forms that are not built with the Form widget, but implemented as raw HTML for example.

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Sd-aYy5DblI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 6 additions & 0 deletions src/docs/reference/modules/Indexing/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,9 @@ be either an `Update` or a `Deletion` task. This list of tasks can also be seen

Other modules can then store their own cursor location for this list, and check for updates and deletions
of content items and do custom operations based on these changes.

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/6jJH9ntqi_A" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/IYKEeYxeNck" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Layers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,7 @@ You must have declared the corresponding zones as sections in your theme:
``` html
@await RenderSectionAsync("Header", required: false)
```

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NCvytsdED_o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Liquid/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1030,3 +1030,7 @@ Optionally you can pass a class for model binding.
<https://github.com/sebastienros/fluid>
Copyright (c) 2017 Sebastien Ros
MIT License

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/pi_WiSqp5x4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 3 additions & 1 deletion src/docs/reference/modules/Lists/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,12 @@ The `list_count` filter counts published content items for a given `ContentItem`

The `list_items` filter loads published content items for a given `ContentItem` object or explicit `ContentItem` id given as a string in a list.

## Video
## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/a3yyR27vdQQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/JYES1i6BdWs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## Lucene Indexing

**Breaking Change**: Every content item that is contained in a list has a `ContainedPart` associated with it.
Expand Down
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Localize/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,3 +166,7 @@ Then, you will be able to run this command to generate the .po files:
``` bash
extractpo <INTPUT_PATH> <OUTPUT_PATH> [-l|--language {"C#"|"VB"}] [-t|--template {"razor"|"liquid"}]
```

## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/cwKa1OA48-4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2 changes: 2 additions & 0 deletions src/docs/reference/modules/Lucene/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,3 +328,5 @@ Starting from OC version 1.5 the Lucene module will automatically map text field
## Video

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/9EgZ_J1npw4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/6jJH9ntqi_A" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
4 changes: 4 additions & 0 deletions src/docs/reference/modules/Media/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,10 @@ To set up indexing for Media do the following:

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/H0jBMH8tj3A" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/monQap7FuiU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## Media Indexing

The `Media Indexing` feature extends the media indexing capability to also encompass searching within files with the following extensions `.txt`, `.md`, `.docx`, and `.pptx`.
Expand Down
4 changes: 3 additions & 1 deletion src/docs/reference/modules/Menu/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,8 @@ function activateLinks(options,cb)
<https://github.com/ilikenwf/nestedSortable>
License: MIT

## Video
## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/mOhbqHKd_CI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/R_Z6gPoAfHE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
6 changes: 6 additions & 0 deletions src/docs/reference/modules/Migrations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,9 @@ Please refer to separate sections for more details on data migrations:

- [Data Migration of Content Types](../ContentTypes/README.md#migrations)
- [Data Migration of Recipes](../Recipes/README.md#recipe-migrations)

## Videos

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/bayT58i7DVY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/mN4H6hIBzWI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
Loading

0 comments on commit cd0d788

Please sign in to comment.