Skip to content

Commit 5942a24

Browse files
authored
Merge pull request #85 from jcdcdev/dev/v13
13.0.5
2 parents 142c35e + 5edc4b8 commit 5942a24

File tree

4 files changed

+160
-121
lines changed

4 files changed

+160
-121
lines changed

.github/README.md

Lines changed: 47 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,67 @@
11
# jcdcdev.Umbraco.ReadingTime
22

3-
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/jcdcdev.umbraco.readingtime)
4-
[![GitHub License](https://img.shields.io/github/license/jcdcdev/jcdcdev.Umbraco.ReadingTime?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/blob/main/LICENSE)
5-
[![NuGet Downloads](https://img.shields.io/nuget/dt/jcdcdev.Umbraco.ReadingTime?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime/)
6-
7-
Custom Data Type for calculating reading time. With full variant support!
8-
9-
The following editors are currently supported:
10-
11-
- Rich Text
12-
- Markdown
13-
- Block Grid
14-
- Block List
15-
- Nested Content
16-
- Textstring
3+
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/jcdcdev.Umbraco.ReadingTime)
4+
[![License](https://img.shields.io/github/license/jcdcdev/jcdcdev.Umbraco.ReadingTime?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime?tab=MIT-1-ov-file)
5+
[![NuGet Downloads](https://img.shields.io/nuget/dt/jcdcdev.Umbraco.ReadingTime?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime)
6+
[![Project Website](https://img.shields.io/badge/Project%20Website-jcdc.dev-jcdcdev?style=flat&color=3c4834&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiaS1wYy1kaXNwbGF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik04IDFhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6bTEgMTMuNWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMG0yIDBhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDBNOS41IDFhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMXpNOSAzLjVhLjUuNSAwIDAgMCAuNS41aDVhLjUuNSAwIDAgMCAwLTFoLTVhLjUuNSAwIDAgMC0uNS41TTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2N0ExLjUgMS41IDAgMCAwIDEuNSAxMkg2djJoLS41YS41LjUgMCAwIDAgMCAxSDd2LTRIMS41YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNUg3VjJ6Ii8+Cjwvc3ZnPg==)](https://jcdc.dev/umbraco-packages/reading-time)
7+
8+
9+
Custom Data Type for calculating reading time. With full variant support!
10+
11+
The following editors are currently supported:
12+
13+
- Rich Text
14+
- Markdown
15+
- Block Grid
16+
- Block List
17+
- Nested Content
18+
- Textstring
1719
- Textarea
1820

1921
## Quick Start
2022

21-
1. Install the [NuGet package](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime) in your Umbraco CMS website project.
22-
```
23-
dotnet add package jcdcdev.Umbraco.ReadingTime
24-
```
25-
2. Add the Reading Time data type to a document type. You can configure:
26-
- `Words per minute` (default is 200)
27-
- `Min Unit` (default is Minute)
28-
- `Max Unit` (default is Minute)
29-
![A screenshot of the BackOffice showing Reading Time data type](https://raw.githubusercontent.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/main/docs/screenshots/datatype.png)
30-
3. Save and publish content.
31-
4. Reading Time will display in the backoffice
32-
33-
![A screenshot of the BackOffice showing Reading Time](https://raw.githubusercontent.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/main/docs/screenshots/backoffice.png)
34-
35-
## Using the value in your templates
36-
37-
In your template, you can accessing the Reading Time property value like any other property:
38-
39-
```html
40-
@Model.ReadingTime.DisplayTime()
23+
1. Install the [NuGet package](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime) in your Umbraco CMS website project.
24+
```
25+
dotnet add package jcdcdev.Umbraco.ReadingTime
26+
```
27+
2. Add the Reading Time data type to a document type. You can configure:
28+
- `Words per minute` (default is 200)
29+
- `Min Unit` (default is Minute)
30+
- `Max Unit` (default is Minute)
31+
3. Save and publish content.
32+
4. Reading Time will display in the backoffice
33+
34+
### Using the value in your templates
35+
36+
In your template, you can accessing the Reading Time property value like any other property:
37+
38+
```html
39+
@Model.ReadingTime.DisplayTime()
4140
```
4241

43-
![A screenshot of page showing Reading Time](https://raw.githubusercontent.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/main/docs/screenshots/displaytime.png)
44-
45-
### Overriding the default display
46-
The `DisplayTime` method will format the reading time as a string using [Humanizer](https://github.com/Humanizr/Humanizer). This supports variants, meaning the reading time will be displayed based on the pluralisation rules of the current culture (e.g. "1 minute", "2 minutes", "0 minuter").
47-
48-
Min and max `TimeUnit` values are derived from the Data Type settings. The below example shows how you can ensure only seconds are displayed.
49-
50-
```csharp
51-
Model.ReadingTime.DisplayTime(minUnit: TimeUnit.Second, maxUnit: TimeUnit.Second)
52-
```
53-
54-
55-
5642
## Configuration
5743

58-
You can change the average words per minute in the data type settings.
59-
60-
When creating a new data type, the default will be 200 words per minute. To change this default, adjust your `appsettings.json` file:
61-
62-
```json
63-
{
64-
"ReadingTime": {
65-
"WordsPerMinute": 200
66-
}
67-
}
68-
```
69-
70-
## Limitations
71-
72-
**Values are derived from published content only.**
73-
74-
Draft content is _not_ included in the calculation.
75-
76-
**Words per minute applies to all variants.**
77-
78-
It is not currently possible to configure words per minute per culture.
44+
You can change the average words per minute in the data type settings.
45+
46+
When creating a new data type, the default will be 200 words per minute.
7947

8048
## Extending
8149

82-
You can extend the data type to support additional editors by implementing the `IReadingTimeValueProvider` interface.
83-
84-
```csharp
85-
public class MyCustomReadingTimeValueProvider : IReadingTimeValueProvider
86-
{
87-
public bool CanConvert(IPropertyType type)
88-
{
89-
return type.EditorAlias == "MyCustomEditorAlias";
90-
}
91-
92-
public TimeSpan? GetReadingTime(IProperty property, string? culture, string? segment, IEnumerable<string> availableCultures, ReadingTimeConfiguration config)
93-
{
94-
var value = property.GetValue(culture, segment, true);
95-
if (value is string text)
96-
{
97-
return text.GetReadingTime(config.WordsPerMinute);
98-
}
99-
100-
return null;
101-
}
102-
}
50+
The `DisplayTime` method will format the reading time as a string using [Humanizer](https://github.com/Humanizr/Humanizer). This supports variants, meaning the reading time will be displayed based on the pluralisation rules of the current culture (e.g. "1 minute", "2 minutes", "0 minuter").
51+
52+
Min and max `TimeUnit` values are derived from the Data Type settings. The below example shows how you can ensure only seconds are displayed.
53+
54+
```csharp
55+
Model.ReadingTime.DisplayTime(minUnit: TimeUnit.Second, maxUnit: TimeUnit.Second)
10356
```
10457

105-
Don't forget to register your custom value provider:
58+
## Contributing
59+
60+
Contributions to this package are most welcome! Please visit the [Contributing](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/contribute) page.
10661

107-
```csharp
108-
public class Composer : IComposer
109-
{
110-
public void Compose(IUmbracoBuilder builder)
111-
{
112-
builder.ReadingTimeValueProviders().Append<MyCustomReadingTimeValueProvider>();
113-
}
114-
}
115-
```
62+
## Acknowledgements (Thanks)
11663

117-
## Contributing
64+
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)
11865

119-
Contributions to this package are most welcome! Please read the [Contributing Guidelines](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/blob/main/.github/CONTRIBUTING.md).
12066

121-
## Acknowledgments (thanks!)
12267

123-
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)

SECURITY.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
The following table outlines the versions of the project that are currently supported with security & feature updates:
6+
7+
> [!NOTE]
8+
> Once a version starts its security phase, it will no longer receive feature updates. Only critical bug fixes and security updates will be provided.
9+
10+
| Package Version | Umbraco Version | Security Phase Start | End of Life |
11+
| ---------------------------------------------------------------------------------- | --------------- | -------------------- | ----------- |
12+
| [10.x](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/v10) | 10 | 2024-06-16 | 2025-06-16 |
13+
| [13.x](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/v13) | 13 | 2025-12-14 | 2026-12-14 |
14+
| [15.x](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/v15) | 15 | 2025-08-14 | 2025-11-14 |
15+
| [16.x](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/v16) | 16 | 2026-03-12 | 2026-06-12 |
16+
## Unsupported Versions
17+
18+
| Package Version | Umbraco Version | End of Life |
19+
| ---------------------------------------------------------------------------------- | --------------- | ----------- |
20+
| [12.x](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/v12) | 12 | 2024-06-29 |
21+
| [14.x](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/v14) | 14 | 2025-05-30 |
22+
23+
24+
## Future Support
25+
26+
Project maintainers plan to support all STS (Short-Term Support) and LTS (Long-Term Support) versions of Umbraco. However, exact release dates cannot be guaranteed.
27+
28+
> [!NOTE]
29+
> Visit [jcdc.dev/blog/umbraco-version-information](https://jcdc.dev/blog/umbraco-version-information) for more information on Umbraco versions.
30+
31+
## Reporting a Vulnerability
32+
33+
If you discover a vulnerability in this project, please follow one of these steps to report it:
34+
35+
- Create an [issue](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/security/advisories/new)
36+
- Contact the project author privately at [jcdc.dev/contact](https://jcdc.dev/contact)
37+
38+
### Details
39+
40+
Include as much information as possible about the vulnerability, including:
41+
42+
- Steps to reproduce
43+
- Potential impact
44+
- Any suggested fixes
45+
46+
### Acknowledgment
47+
48+
You will receive an acknowledgment of your report as soon as possible.
49+
50+
> [!NOTE]
51+
> Response times may vary depending on other commitments.
52+
53+
### Resolution
54+
55+
Once the vulnerability is confirmed, project maintainers will work to resolve it as quickly as possible.
56+
57+
You will be notified once the issue has been resolved or rejected.
58+
59+
> [!TIP]
60+
> If the vulnerability is accepted, you will receive credit in the release notes.
61+
62+
Thank you for helping to keep this project secure!
63+

docs/README_nuget.md

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,58 @@
11
# jcdcdev.Umbraco.ReadingTime
22

3-
[![Documentation](https://img.shields.io/badge/Docs-Quickstart-394933?style=flat&logo=github)](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/tree/main?tab=readme-ov-file#quick-start)
4-
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/jcdcdev.umbraco.readingtime)
5-
[![GitHub License](https://img.shields.io/github/license/jcdcdev/jcdcdev.Umbraco.ReadingTime?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/blob/main/LICENSE)
6-
[![NuGet Downloads](https://img.shields.io/nuget/dt/jcdcdev.Umbraco.ReadingTime?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime/)
3+
[![Documentation](https://img.shields.io/badge/Docs-Quickstart-394933?style=flat&logo=github)](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/#quick-start)
4+
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/jcdcdev.Umbraco.ReadingTime)
5+
[![License](https://img.shields.io/github/license/jcdcdev/jcdcdev.Umbraco.ReadingTime?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime?tab=MIT-1-ov-file)
6+
[![NuGet Downloads](https://img.shields.io/nuget/dt/jcdcdev.Umbraco.ReadingTime?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime)
7+
[![Project Website](https://img.shields.io/badge/Project%20Website-jcdc.dev-jcdcdev?style=flat&color=3c4834&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiaS1wYy1kaXNwbGF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik04IDFhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6bTEgMTMuNWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMG0yIDBhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDBNOS41IDFhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMXpNOSAzLjVhLjUuNSAwIDAgMCAuNS41aDVhLjUuNSAwIDAgMCAwLTFoLTVhLjUuNSAwIDAgMC0uNS41TTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2N0ExLjUgMS41IDAgMCAwIDEuNSAxMkg2djJoLS41YS41LjUgMCAwIDAgMCAxSDd2LTRIMS41YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNUg3VjJ6Ii8+Cjwvc3ZnPg==)](https://jcdc.dev/umbraco-packages/reading-time)
8+
9+
10+
Custom Data Type for calculating reading time. With full variant support!
11+
12+
The following editors are currently supported:
13+
14+
- Rich Text
15+
- Markdown
16+
- Block Grid
17+
- Block List
18+
- Nested Content
19+
- Textstring
20+
- Textarea
721

8-
Custom Data Type for calculating reading time. With full variant support!
22+
## Quick Start
23+
24+
1. Install the [NuGet package](https://www.nuget.org/packages/jcdcdev.Umbraco.ReadingTime) in your Umbraco CMS website project.
25+
```
26+
dotnet add package jcdcdev.Umbraco.ReadingTime
27+
```
28+
2. Add the Reading Time data type to a document type. You can configure:
29+
- `Words per minute` (default is 200)
30+
- `Min Unit` (default is Minute)
31+
- `Max Unit` (default is Minute)
32+
3. Save and publish content.
33+
4. Reading Time will display in the backoffice
34+
35+
### Using the value in your templates
36+
37+
In your template, you can accessing the Reading Time property value like any other property:
38+
39+
```html
40+
@Model.ReadingTime.DisplayTime()
41+
```
42+
43+
## Configuration
44+
45+
You can change the average words per minute in the data type settings.
46+
47+
When creating a new data type, the default will be 200 words per minute.
948

10-
The following editors are currently supported:
49+
## Contributing
1150

12-
- Rich Text
13-
- Markdown
14-
- Block Grid
15-
- Block List
16-
- Nested Content
17-
- Textstring
18-
- Textarea
51+
Contributions to this package are most welcome! Please visit the [Contributing](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/contribute) page.
1952

20-
## Contributing
53+
## Acknowledgements (Thanks)
54+
55+
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)
2156

22-
Contributions to this package are most welcome! Please read the [Contributing Guidelines](https://github.com/jcdcdev/jcdcdev.Umbraco.ReadingTime/blob/main/.github/CONTRIBUTING.md).
2357

24-
## Acknowledgments (thanks!)
2558

26-
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)

src/TestSite.13/TestSite.13.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Umbraco.Cms" Version="13.8.0"/>
10+
<PackageReference Include="Umbraco.Cms" Version="13.8.1"/>
1111
<PackageReference Include="uSync" Version="13.2.7"/>
1212
</ItemGroup>
1313

0 commit comments

Comments
 (0)