Skip to content

Commit 7d3f380

Browse files
hesspavelbkapustikkapustbDavidBKenticoOndraM-Kentico
authored
Email Builder Starter Kit initial (#3)
* feat(css): experimental way of defining classes for the emailbuilder * feat(Product): product base * feat(widgets): remove unused widgets, experimental content item selectors * feat(example): dancing goat initial * feat(mjml): add to startup * feat(widgets): Product, Article Widgets implementation, mapper api, dancing goat examples * feat(widgets): removed unused widgets, add example css * feat(css): style sheet source file configurable * feat(configuration): add builder * feat(solution): cleanup repo * feat(repo): add comments * feat(widgets): bring back button, content, hero * feat(sections): multiple columns * feat(docs): initial * fix(docs): grammar and wording * feat(docs): add screenshots to readme * feat(product/article): positioning the link to the product/article page * feat(styles): use configured style sheet on Button, Content and Hero widgets * feat(Content Widget): rich text editor * feat(logo, hero): use media library as image source for widgets. add logo widget * feat(logo, hero): update docs * fix: Solution name fixed * feat(article, product): change api to register widget data retrievers generically in startup, rename mappers to WidgetDataRetriever, update docs, fix grammar * feat(XbyK): update to v30.3.0 * feat(update): remove email builder warning surpression which is not needed because of the newest emailbuilder version * fix(EmailSection): removed unneccesary EmailSection.cs file, move the properties of the Section Component to the razor file * fix(Widgets): seal property classes for all widgets * fix(CssLoaderService): use CMS.IO * fix(naming): rename style sheet path property in mjml email builder options * feat(update): remove email builder warning surpression which is not needed because of the newest emailbuilder version * feat(product/article): positioning the link to the product/article page * feat(styles): use configured style sheet on Button, Content and Hero widgets * feat(Content Widget): rich text editor * feat(logo, hero): use media library as image source for widgets. add logo widget * feat(logo, hero): update docs * feat(article, product): change api to register widget data retrievers generically in startup, rename mappers to WidgetDataRetriever, update docs, fix grammar * fix(button): remove widget properties * fix(Button): readd button widget properties * feat(Button): explanation text of the url property * feat(Button): enums into separate files * fix(Components): removed unneccesary usings * fix(Product template): separate markup and code * fix(code cleanup) * fix(IWidgetDataRetriever): rename * fix(formatting): run dotnet format * fix(editorconfig): line endings default * fix(editorconfig) * fix(repo): line endings * fix(formatting): line endings * fix(formatting): add gitattributes * fix(naming): rename product template to EmailBuilderStarterKitTemplate * feat(Default template): change title to subject of the email * fix(Default template): remove redundand mj-section * fix(SectionBase): number of sections * fix(format): remove unused using * fix(Rcl.csproj): remove unneccesary file imports * fix(SectionBase): zonename increment * fix(Data retrieval): remove the need to specify a channel * fix(WidgetProperties): move properties to code behind files * feat(Article, Product widgets): log error on attempt to use the widgets without registers IWidgtetDataProviders * fix(formatting & widget models): remove unused usings, seal widget model classes * fix(naming) * feat(repo): update nuget versions * fix(repo): package url * feat(Article): remove usage of Url.Content * feat(styling): prefix all classes with mj-email- * fix(naming) * fix(comments): typo * fix(cssLoaderService): sealed * feat(LogoWidget): seal properties * feat(Icons): add icons for components * fix(repo) * fix(CssLoaderService): CMS.IO used. * refactor(HorizontalAlignment): typos fixed, renamed for generalization * refactor(ContentPositionType): renamed for generalization * rafactor(IMediaFileService): extract to a separate file, annotation changed * rafactor: project updates * refactor: widgets removed * feat: Product widget improved. Content types filter added. * feat: localizations configured * refactor: Text widget renamed * feat: Image widget and text widget improved. Inline editor added. * feat(TextWidget): css class parameter added * feat: css class property in configuration * feat(divider): divider widget added * feat: Product widget layout improved. Image resolver example. * feat: localizations for widgets and properties * fix: button css class configurable * fix: code formatting and clean up * refactor: starter kit registration simplified * feat: content type code name mapping to guid in content type filters. * fix: code formatting * fix: text widget supports only inline editing * fix: multiple issues fixed * fix: code formatting, razor rules added. Missing library configuration added. * feat: DancingGoat upgraded. Documentation updated. * fix: code formatting * docs: Update documentation and resource strings, final TW review * Delete images/xperience-section-usage.png * Add xperience-section-usage.png image * docs: Heading capitalization fix * fix: Polished XML docs --------- Co-authored-by: bkapustik <boriskokap@gmail.com> Co-authored-by: kapustb <55467298@mff.cuni.cz> Co-authored-by: Boris Kapustík <82807109+bkapustik@users.noreply.github.com> Co-authored-by: David Benovsky <DavidB@kentico.com> Co-authored-by: Ondřej Machala <15248835+OndraM-Kentico@users.noreply.github.com>
1 parent fc1b367 commit 7d3f380

File tree

505 files changed

+37955
-813
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

505 files changed

+37955
-813
lines changed

.editorconfig

Lines changed: 57 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Severity levels of analyzers https://docs.microsoft.com/en-us/visualstudio/code-quality/roslyn-analyzers-overview?view=vs-2019#severity-levels-of-analyzers
1+
# Severity levels of analyzers https://docs.microsoft.com/en-us/visualstudio/code-quality/roslyn-analyzers-overview?view=vs-2019#severity-levels-of-analyzers
22

33
root = true
44

@@ -8,6 +8,12 @@ indent_size = 4
88
indent_style = space
99
insert_final_newline = true
1010

11+
[*.razor]
12+
end_of_line = crlf
13+
indent_size = 4
14+
indent_style = space
15+
insert_final_newline = true
16+
1117
# Formatting Rules
1218

1319
## IDE0055: Fix formatting
@@ -64,7 +70,7 @@ csharp_preserve_single_line_statements = fals
6470
csharp_preserve_single_line_blocks = true
6571

6672
### Using directive options
67-
csharp_using_directive_placement = outside_namespace : error
73+
csharp_using_directive_placement = outside_namespace:error
6874
dotnet_diagnostic.IDE0065.severity = error
6975

7076
# Code Style Rules
@@ -210,35 +216,29 @@ dotnet_diagnostic.IDE0062.severity = warn
210216
csharp_style_inlined_variable_declaration = true : error
211217
dotnet_diagnostic.IDE0018.severity = error
212218

213-
csharp_style_var_elsewhere = true : error
214-
csharp_style_var_for_built_in_types = false : error
215-
csharp_style_var_when_type_is_apparent = true : error
216-
dotnet_diagnostic.IDE0007.severity = error
217-
dotnet_diagnostic.IDE0008.severity = error
218-
219-
csharp_style_expression_bodied_constructors = true : error
219+
csharp_style_expression_bodied_constructors = true:error
220220
dotnet_diagnostic.IDE0021.severity = error
221221

222-
csharp_style_expression_bodied_methods = true : error
222+
csharp_style_expression_bodied_methods = true:error
223223
dotnet_diagnostic.IDE0022.severity = error
224224

225-
csharp_style_expression_bodied_operators = true : error
225+
csharp_style_expression_bodied_operators = true:error
226226
dotnet_diagnostic.IDE0023.severity = error
227227
dotnet_diagnostic.IDE0024.severity = error
228228

229-
csharp_style_expression_bodied_properties = true : error
229+
csharp_style_expression_bodied_properties = true:error
230230
dotnet_diagnostic.IDE0025.severity = error
231231

232-
csharp_style_expression_bodied_indexers = true : error
232+
csharp_style_expression_bodied_indexers = true:error
233233
dotnet_diagnostic.IDE0026.severity = error
234234

235-
csharp_style_expression_bodied_accessors = true : error
235+
csharp_style_expression_bodied_accessors = true:error
236236
dotnet_diagnostic.IDE0027.severity = error
237237

238-
csharp_style_expression_bodied_lambdas = true : error
238+
csharp_style_expression_bodied_lambdas = true:error
239239
dotnet_diagnostic.IDE0053.severity = error
240240

241-
csharp_style_expression_bodied_local_functions = true : error
241+
csharp_style_expression_bodied_local_functions = true:error
242242
dotnet_diagnostic.IDE0061.severity = error
243243

244244
csharp_style_pattern_matching_over_as_with_null_check = true : error
@@ -256,10 +256,10 @@ dotnet_diagnostic.IDE0078.severity = erro
256256
csharp_style_prefer_not_pattern = true : error
257257
dotnet_diagnostic.IDE0083.severity = error
258258

259-
csharp_prefer_braces = true : error
259+
csharp_prefer_braces = true:error
260260
dotnet_diagnostic.IDE0011.severity = error
261261

262-
csharp_prefer_simple_using_statement = true : error
262+
csharp_prefer_simple_using_statement = true:error
263263
dotnet_diagnostic.IDE0063.severity = error
264264

265265
csharp_style_prefer_index_operator = true : warning
@@ -297,45 +297,70 @@ dotnet_naming_symbols.const_field_symbols.required_modifiers = cons
297297
dotnet_naming_symbols.const_field_symbols.applicable_accessibilities = *
298298
dotnet_naming_style.const_field_symbols.capitalization = pascal_case
299299

300-
dotnet_naming_rule.const_fields_must_be_pascal_case.severity = error
300+
dotnet_naming_rule.const_fields_must_be_pascal_case.severity = error
301301
dotnet_naming_rule.const_fields_must_be_pascal_case.symbols = const_field_symbols
302-
dotnet_naming_rule.const_fields_must_be_pascal_case.style = const_field_symbols
302+
dotnet_naming_rule.const_fields_must_be_pascal_case.style = const_field_symbols
303303

304304
dotnet_naming_symbols.private_field_symbol.applicable_kinds = field
305305
dotnet_naming_symbols.private_field_symbol.applicable_accessibilities = private
306306
dotnet_naming_style.private_field_style.capitalization = camel_case
307-
dotnet_naming_rule.private_fields_are_camel_case.severity = warning
307+
dotnet_naming_rule.private_fields_are_camel_case.severity = warning
308308
dotnet_naming_rule.private_fields_are_camel_case.symbols = private_field_symbol
309-
dotnet_naming_rule.private_fields_are_camel_case.style = private_field_style
309+
dotnet_naming_rule.private_fields_are_camel_case.style = private_field_style
310310

311311
dotnet_naming_symbols.non_private_field_symbol.applicable_kinds = field
312312
dotnet_naming_symbols.non_private_field_symbol.applicable_accessibilities = public,internal,friend,protected,protected_internal,protected_friend
313313
dotnet_naming_style.non_private_field_style.capitalization = pascal_case
314-
dotnet_naming_rule.non_private_fields_are_pascal_case.severity = warning
314+
dotnet_naming_rule.non_private_fields_are_pascal_case.severity = warning
315315
dotnet_naming_rule.non_private_fields_are_pascal_case.symbols = non_private_field_symbol
316-
dotnet_naming_rule.non_private_fields_are_pascal_case.style = non_private_field_style
316+
dotnet_naming_rule.non_private_fields_are_pascal_case.style = const_field_symbols
317317

318318
dotnet_naming_symbols.parameter_symbol.applicable_kinds = parameter
319319
dotnet_naming_style.parameter_style.capitalization = camel_case
320-
dotnet_naming_rule.parameters_are_camel_case.severity = warning
320+
dotnet_naming_rule.parameters_are_camel_case.severity = warning
321321
dotnet_naming_rule.parameters_are_camel_case.symbols = parameter_symbol
322-
dotnet_naming_rule.parameters_are_camel_case.style = parameter_style
322+
dotnet_naming_rule.parameters_are_camel_case.style = private_field_style
323323

324324
dotnet_naming_symbols.non_interface_type_symbol.applicable_kinds = class,struct,enum,delegate
325325
dotnet_naming_style.non_interface_type_style.capitalization = pascal_case
326-
dotnet_naming_rule.non_interface_types_are_pascal_case.severity = error
326+
dotnet_naming_rule.non_interface_types_are_pascal_case.severity = error
327327
dotnet_naming_rule.non_interface_types_are_pascal_case.symbols = non_interface_type_symbol
328-
dotnet_naming_rule.non_interface_types_are_pascal_case.style = non_interface_type_style
328+
dotnet_naming_rule.non_interface_types_are_pascal_case.style = const_field_symbols
329329

330330
dotnet_naming_symbols.interface_type_symbol.applicable_kinds = interface
331331
dotnet_naming_style.interface_type_style.capitalization = pascal_case
332332
dotnet_naming_style.interface_type_style.required_prefix = I
333-
dotnet_naming_rule.interface_types_must_be_prefixed_with_I.severity = error
333+
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.severity = error
334334
dotnet_naming_rule.interface_types_must_be_prefixed_with_I.symbols = interface_type_symbol
335-
dotnet_naming_rule.interface_types_must_be_prefixed_with_I.style = interface_type_style
335+
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.style = interface_type_style
336336

337337
dotnet_naming_symbols.member_symbol.applicable_kinds = method,property,event
338338
dotnet_naming_style.member_style.capitalization = pascal_case
339-
dotnet_naming_rule.members_are_pascal_case.severity = error
339+
dotnet_naming_rule.members_are_pascal_case.severity = error
340340
dotnet_naming_rule.members_are_pascal_case.symbols = member_symbol
341-
dotnet_naming_rule.members_are_pascal_case.style = member_style
341+
dotnet_naming_rule.members_are_pascal_case.style = const_field_symbols
342+
csharp_style_namespace_declarations = block_scoped:silent
343+
csharp_style_prefer_method_group_conversion = true:silent
344+
csharp_style_prefer_top_level_statements = true:silent
345+
csharp_style_prefer_primary_constructors = true:suggestion
346+
347+
[*.{cs,vb}]
348+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
349+
tab_width = 4
350+
indent_size = 4
351+
end_of_line = crlf
352+
dotnet_style_coalesce_expression = true:error
353+
dotnet_style_null_propagation = true:error
354+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:error
355+
dotnet_style_prefer_auto_properties = true:warning
356+
dotnet_style_object_initializer = true:error
357+
dotnet_style_prefer_collection_expression = true:suggestion
358+
dotnet_style_collection_initializer = true:error
359+
dotnet_style_prefer_simplified_boolean_expressions = true:warning
360+
dotnet_style_prefer_conditional_expression_over_assignment = true:error
361+
dotnet_style_prefer_conditional_expression_over_return = true:silent
362+
dotnet_style_explicit_tuple_names = true:error
363+
dotnet_style_prefer_inferred_tuple_names = true:error
364+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:error
365+
dotnet_style_prefer_compound_assignment = true:error
366+
dotnet_style_prefer_simplified_interpolation = true:error

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* text eol=crlf

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- uses: actions/checkout@v4
2424

2525
- name: Run dotnet format
26-
run: dotnet format Kentico.Xperience.RepoTemplate.sln --exclude ./examples/** --verify-no-changes
26+
run: dotnet format Kentico.Xperience.Mjml.StarterKit.sln --exclude ./examples/** --verify-no-changes
2727

2828
build_and_test:
2929
name: Build and Test

Directory.Build.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
<Copyright>Copyright © $(Company) $([System.DateTime]::Now.Year)</Copyright>
77
<Trademark>$(Company)™</Trademark>
88
<VersionPrefix>1.0.0</VersionPrefix>
9-
<VersionSuffix>prerelease-1</VersionSuffix>
9+
<VersionSuffix>prerelease-3</VersionSuffix>
1010
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1111

12-
<PackageProjectUrl>https://github.com/Kentico/REPOSITORY_NAME</PackageProjectUrl>
13-
<PackageReleaseNotes>https://github.com/Kentico/REPOSITORY_NAME/releases</PackageReleaseNotes>
12+
<PackageProjectUrl>https://github.com/Kentico/xperience-by-kentico-email-builder-starter-kit</PackageProjectUrl>
13+
<PackageReleaseNotes>https://github.com/Kentico/xperience-by-kentico-email-builder-starter-kit/releases</PackageReleaseNotes>
1414
<PackageIcon>logo.png</PackageIcon>
1515
<PackageReadmeFile>README.md</PackageReadmeFile>
1616
<PackageTags>xperience;kentico;aspnetcore</PackageTags>

Directory.Packages.props

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
77
</PropertyGroup>
88
<ItemGroup>
9-
<PackageVersion Include="Kentico.Xperience.Admin" Version="29.6.0" />
10-
<PackageVersion Include="Kentico.Xperience.WebApp" Version="29.6.0" />
11-
<PackageVersion Include="kentico.xperience.azurestorage" Version="29.6.0" />
12-
<PackageVersion Include="kentico.xperience.imageprocessing" Version="29.6.0" />
9+
<PackageVersion Include="Kentico.Xperience.Admin" Version="30.4.0" />
10+
<PackageVersion Include="Kentico.Xperience.WebApp" Version="30.4.0" />
11+
<PackageVersion Include="kentico.xperience.azurestorage" Version="30.4.0" />
12+
<PackageVersion Include="kentico.xperience.imageprocessing" Version="30.4.0" />
13+
<PackageVersion Include="kentico.xperience.mjml" Version="30.4.0" />
1314
<PackageVersion Include="SonarAnalyzer.CSharp" Version="9.32.0.97167" />
15+
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="8.0.14" />
1416
</ItemGroup>
1517
</Project>

Directory.build.targets

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,5 @@
99
<AssemblyToSign Include="$(XmlSerializersTargetPath)" Condition="Exists('$(XmlSerializersTargetPath)')" />
1010
</ItemGroup>
1111

12-
<Exec Command="dotnet AzureSignTool sign --azure-key-vault-url $(AuthenticodeKeyVaultUrl) --azure-key-vault-tenant-id $(AuthenticodeTenantId) --azure-key-vault-client-id $(AuthenticodeClientId) --azure-key-vault-client-secret $(AuthenticodeClientSecret) --azure-key-vault-certificate $(AuthenticodeCertificateName) --timestamp-rfc3161 $(TimestampServerUrl) --skip-signed %(AssemblyToSign.Identity)" />
1312
</Target>
1413
</Project>

Kentico.Xperience.Mjml.StarterKit.sln

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.12.35728.132
5+
MinimumVisualStudioVersion = 10.0.40219.1
36
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kentico.Xperience.Mjml.StarterKit.Rcl", "src\Kentico.Xperience.Mjml.StarterKit.Rcl\Kentico.Xperience.Mjml.StarterKit.Rcl.csproj", "{5BDAC64C-436F-475F-9650-B22DB74958F1}"
47
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DancingGoat", "examples\DancingGoat\DancingGoat.csproj", "{A2326E6C-ECF8-4E8A-A499-0ED6A4E2203B}"
9+
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{23EE9335-7EFE-4936-931F-5ED671605425}"
11+
ProjectSection(SolutionItems) = preProject
12+
.editorconfig = .editorconfig
13+
Directory.Build.props = Directory.Build.props
14+
Directory.build.targets = Directory.build.targets
15+
Directory.Packages.props = Directory.Packages.props
16+
global.json = global.json
17+
EndProjectSection
18+
EndProject
519
Global
620
GlobalSection(SolutionConfigurationPlatforms) = preSolution
721
Debug|Any CPU = Debug|Any CPU
@@ -12,5 +26,12 @@ Global
1226
{5BDAC64C-436F-475F-9650-B22DB74958F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
1327
{5BDAC64C-436F-475F-9650-B22DB74958F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
1428
{5BDAC64C-436F-475F-9650-B22DB74958F1}.Release|Any CPU.Build.0 = Release|Any CPU
29+
{A2326E6C-ECF8-4E8A-A499-0ED6A4E2203B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30+
{A2326E6C-ECF8-4E8A-A499-0ED6A4E2203B}.Debug|Any CPU.Build.0 = Debug|Any CPU
31+
{A2326E6C-ECF8-4E8A-A499-0ED6A4E2203B}.Release|Any CPU.ActiveCfg = Release|Any CPU
32+
{A2326E6C-ECF8-4E8A-A499-0ED6A4E2203B}.Release|Any CPU.Build.0 = Release|Any CPU
33+
EndGlobalSection
34+
GlobalSection(SolutionProperties) = preSolution
35+
HideSolutionNode = FALSE
1536
EndGlobalSection
1637
EndGlobal

0 commit comments

Comments
 (0)