Skip to content

Commit

Permalink
Merge pull request #31 from leekelleher/develop
Browse files Browse the repository at this point in the history
Preparing v1.0.0 release
leekelleher authored Aug 12, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents 7cc53cc + f19486d commit 388d804
Showing 43 changed files with 192 additions and 140 deletions.
2 changes: 1 addition & 1 deletion .github/IDEAS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<img src="../docs/assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../docs/assets/img/logo.png" alt="Contentment for Umbraco Logo" title="A state of Umbraco happiness." height="130" align="right">

# Ideas for Contentment

8 changes: 6 additions & 2 deletions .github/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="../docs/assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../docs/assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

> contentment /kənˈtɛntm(ə)nt/ - a state of happiness and satisfaction
@@ -112,3 +112,7 @@ _To give you an idea of how much human developer time/effort has been put into m

- Thank you to [Umbrella](https://umbrellainc.co.uk) for facilitating the time and resource to help me develop this project.


#### Logo

The package logo uses the [Happy](https://thenounproject.com/term/happy/375493/) (by [Nick Bluth](https://thenounproject.com/nickbluth/)) icon from the [Noun Project](https://thenounproject.com), licensed under [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/).
7 changes: 4 additions & 3 deletions .github/ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<img src="../docs/assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../docs/assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

# Umbraco Contentment - Roadmap

Here is a _provisional_ roadmap for the Umbraco Contentment package, to be actioned at my own pleasure.
Here is a _provisional_ roadmap for the Contentment for Umbraco package, to be actioned at my own pleasure.


## v1
@@ -27,6 +27,7 @@ Initial release. Property Editors are:

- Text Input _(a reimagining of the textstring editor)_
- Number Input _(a reimagining of the numeric editor)_
- Data List: Templated List _(use custom AngularJS markup to render items)_

### v1.3

@@ -53,5 +54,5 @@ Could be an interesting to explore the validation approaches for the Contentment
## v2

- _Who knows?!_ `¯\_(ツ)_/¯`
- Let's see if new ideas can be sparked from Umbraco v8.6+!
- Let's see if new ideas can be sparked from Umbraco v8.7+!

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.0-beta
1.0.0
5 changes: 3 additions & 2 deletions build/build-pkgs.ps1
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@ Function parseSemVer($version) {

# Set various variables / folder paths

$nugetPackageId = 'Our.Umbraco.Community.Contentment';
$projectNamespace = 'Umbraco.Community.Contentment';
$packageName = 'Contentment';
$nugetTitle = "${packageName} for Umbraco";
@@ -136,8 +137,8 @@ Compress-Archive -Path "${umbFolder}\*" -DestinationPath "${artifactsFolder}\Con
# Populate the NuGet package manifest

Copy-Item -Path "${rootFolder}\docs\assets\img\logo.png" -Destination "${assetsFolder}\icon.png";
& $nuget_exe pack "${buildFolder}\manifest-nuget-core.nuspec" -BasePath $assetsFolder -OutputDirectory $artifactsFolder -Version "$($semver.VersionString)" -Properties "id=$projectNamespace;version=$($semver.VersionString);title=$nugetTitle;authors=$authorName;owners=$authorName;projectUrl=$packageUrl;requireLicenseAcceptance=false;description=$packageDescription;copyright=$copyright;license=MPL-2.0;language=en;tags=umbraco;minUmbracoVersion=$($minUmbracoVersion.VersionString);repositoryUrl=$packageUrl;"
& $nuget_exe pack "${buildFolder}\manifest-nuget-web.nuspec" -BasePath $assetsFolder -OutputDirectory $artifactsFolder -Version "$($semver.VersionString)" -Properties "id=$projectNamespace;version=$($semver.VersionString);title=$nugetTitle;authors=$authorName;owners=$authorName;projectUrl=$packageUrl;requireLicenseAcceptance=false;description=$packageDescription;copyright=$copyright;license=MPL-2.0;language=en;tags=umbraco;minUmbracoVersion=$($minUmbracoVersion.VersionString);repositoryUrl=$packageUrl;"
& $nuget_exe pack "${buildFolder}\manifest-nuget-core.nuspec" -BasePath $assetsFolder -OutputDirectory $artifactsFolder -Version "$($semver.VersionString)" -Properties "id=$nugetPackageId;version=$($semver.VersionString);title=$nugetTitle;authors=$authorName;owners=$authorName;projectUrl=$packageUrl;requireLicenseAcceptance=false;description=$packageDescription;copyright=$copyright;license=MPL-2.0;language=en;tags=umbraco;minUmbracoVersion=$($minUmbracoVersion.VersionString);repositoryUrl=$packageUrl;"
& $nuget_exe pack "${buildFolder}\manifest-nuget-web.nuspec" -BasePath $assetsFolder -OutputDirectory $artifactsFolder -Version "$($semver.VersionString)" -Properties "id=$nugetPackageId;version=$($semver.VersionString);title=$nugetTitle;authors=$authorName;owners=$authorName;projectUrl=$packageUrl;requireLicenseAcceptance=false;description=$packageDescription;copyright=$copyright;license=MPL-2.0;language=en;tags=umbraco;minUmbracoVersion=$($minUmbracoVersion.VersionString);repositoryUrl=$packageUrl;"


# Tidy up folders
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

### Documentation

Binary file modified docs/assets/img/github-repository-open-graph-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/img/github-repository-open-graph-image.psd
Binary file not shown.
Binary file modified docs/assets/img/icon-1024px.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/img/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/img/icon.psd
Binary file not shown.
Binary file modified docs/assets/img/logo-1200px.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/img/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/img/logo.psd
Binary file not shown.
4 changes: 2 additions & 2 deletions docs/editors/bytes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="../assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

### Bytes

59 changes: 56 additions & 3 deletions docs/editors/data-list.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="../assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

### Data List

@@ -9,6 +9,7 @@ Data List is a property-editor that takes a data source and makes the values sel
_If that sounds too generic, think of it like this... take a data source, say a SQL query, and display the results in an editor, say a dropdown-list, or checkbox-list, or whatever!_

> This property-editor has taken some inspiration from the community package, [nuPickers](https://our.umbraco.com/packages/backoffice-extensions/nupickers/) by Hendy Racher, _(itself inspired by [a uComponents idea](https://gist.github.com/leekelleher/6183524))._
> **Please note,** Data List is not a drop in replacement for nuPickers. Data List does not offer like-for-like features.

### How to configure the editor?
@@ -98,7 +99,7 @@ public class TimeZoneDataSource : IDataListSource
items.Add(new DataListItem
{
Name = timezone.DisplayName,
Value = timezone.BaseUtcOffset.ToString()
Value = timezone.Id
});
}

@@ -121,6 +122,58 @@ public IEnumerable<ConfigurationField> Fields => new ConfigurationField[]
}
}
```
#### Providing custom values for published content

As explained in the [*How to get the value?*](#how-to-get-the-value) section, the values from your data source will be either `string` or `IEnumerable<string>` by default.

If you need something more than this, your custom data source should implement the [`Umbraco.Community.Contentment.DataEditors.IDataListSourceValueConverter`](https://github.com/leekelleher/umbraco-contentment/blob/master/src/Umbraco.Community.Contentment/DataEditors/DataList/IDataListSourceValueConverter.cs) interface instead of `IDataListSource`. This interface inherits from `IDataListSource`, but also specifies two new methods that your data source will have to implement - that is the `GetValueType` and `ConvertValue` methods.
With this interface, the `TimeZoneDataSource` class from before could now look like:

```csharp
public class TimeZoneDataSource : IDataListSource, IDataListSourceValueConverter
{
public string Name => "Time zones";

public string Description => "Data source for all the time zones.";

public string Icon => "icon-globe";

public OverlaySize OverlaySize => OverlaySize.Small;

public Dictionary<string, object> DefaultValues => default;

public IEnumerable<ConfigurationField> Fields => default;

public IEnumerable<DataListItem> GetItems(Dictionary<string, object> config)
{
var items = new List<DataListItem>();

foreach (var timezone in TimeZoneInfo.GetSystemTimeZones())
{
items.Add(new DataListItem
{
Name = timezone.DisplayName,
Value = timezone.Id
});
}

return items;
}

public Type GetValueType(Dictionary<string, object> config)
{
return typeof(TimeZoneInfo);
}

public object ConvertValue(Type type, string value)
{
return TimeZoneInfo.FindSystemTimeZoneById(value);
}
}
```

This ensures that you'll get the value as `IEnumerable<TimeZoneInfo>` instead of `IEnumerable<string>`.


#### Extending with your own custom list editor
4 changes: 2 additions & 2 deletions docs/editors/icon-picker.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="../assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

### Icon Picker

4 changes: 2 additions & 2 deletions docs/editors/notes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="../assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

### Notes

4 changes: 2 additions & 2 deletions docs/editors/render-macro.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<img src="../assets/img/logo.png" alt="Umbraco Contentment Logo" title="A state of Umbraco happiness." height="130" align="right">
<img src="../assets/img/logo.png" alt="Contentment for Umbraco logo" title="A state of Umbraco happiness." height="130" align="right">

## Umbraco Contentment
## Contentment for Umbraco

**What is a Macro?**

Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ private void ServerVariablesParser_Parsing(object sender, Dictionary<string, obj
e.Add(Constants.Internals.ProjectAlias, new
{
name = Constants.Internals.ProjectName,
version = ContentmentVersion.SemanticVersion.ToSemanticString()
version = Configuration.ContentmentVersion.SemanticVersion.ToSemanticString()
});
}
}
Original file line number Diff line number Diff line change
@@ -11,8 +11,8 @@
namespace Umbraco.Community.Contentment.Composing
{
[ComposeAfter(typeof(WebInitialComposer))]
[ComposeBefore(typeof(ContentmentRunComposer))]
internal sealed class ContentmentBootComposer : IUserComposer
[RuntimeLevel(MinLevel = RuntimeLevel.Boot)]
internal sealed class ContentmentComposer : IUserComposer
{
public void Compose(Composition composition)
{
@@ -22,6 +22,11 @@ public void Compose(Composition composition)
;

composition.RegisterUnique<ConfigurationEditorUtility>();

composition
.Components()
.Append<ContentmentComponent>()
;
}
}
}
Original file line number Diff line number Diff line change
@@ -5,18 +5,21 @@

using System;
using System.Collections.Generic;
using System.ComponentModel;
using Umbraco.Community.Contentment.DataEditors;
using Umbraco.Core;
using Umbraco.Core.Composing;

namespace Umbraco.Community.Contentment.Composing
{
[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class ContentmentListItemCollectionBuilder
: LazyCollectionBuilderBase<ContentmentListItemCollectionBuilder, ContentmentListItemCollection, IContentmentListItem>
{
protected override ContentmentListItemCollectionBuilder This => this;
}

[EditorBrowsable(EditorBrowsableState.Advanced)]
public sealed class ContentmentListItemCollection : BuilderCollectionBase<IContentmentListItem>
{
private readonly Dictionary<string, IContentmentListItem> _lookup;

This file was deleted.

Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
using Semver;
using Umbraco.Core;

namespace Umbraco.Community.Contentment
namespace Umbraco.Community.Contentment.Configuration
{
public static class ContentmentVersion
{
30 changes: 30 additions & 0 deletions src/Umbraco.Community.Contentment/Constants.cs
Original file line number Diff line number Diff line change
@@ -41,6 +41,36 @@ internal static partial class ConfigurationFieldAliases
public const string OverlayView = "overlayView";
}

internal static partial class DefaultConfiguration
{
public static readonly object RichTextEditor = new
{
maxImageSize = 500,
mode = "classic",
stylesheets = false,
toolbar = new[]
{
"ace",
"undo",
"redo",
"cut",
"styleselect",
"removeformat",
"bold",
"italic",
"alignleft",
"aligncenter",
"alignright",
"bullist",
"numlist",
"link",
"umbmediapicker",
"umbmacro",
"umbembeddialog"
},
};
}

internal static partial class PropertyGroups
{
public const string Code = "Code";
12 changes: 6 additions & 6 deletions src/Umbraco.Community.Contentment/Core/DictionaryExtensions.cs
Original file line number Diff line number Diff line change
@@ -9,16 +9,16 @@ namespace Umbraco.Core
{
internal static class DictionaryExtensions
{
public static TValOut GetValueAs<TKey, TVal, TValOut>(this IDictionary<TKey, TVal> config, TKey key, TValOut defaultValue = default)
public static TValueOut GetValueAs<TKey, TValue, TValueOut>(this IDictionary<TKey, TValue> config, TKey key, TValueOut defaultValue = default)
{
if (config.TryGetValue(key, out var tmp))
{
if (tmp is TValOut value)
if (tmp is TValueOut value)
{
return value;
}

var attempt = tmp.TryConvertTo<TValOut>();
var attempt = tmp.TryConvertTo<TValueOut>();
if (attempt.Success)
{
return attempt.Result;
@@ -28,17 +28,17 @@ public static TValOut GetValueAs<TKey, TVal, TValOut>(this IDictionary<TKey, TVa
return defaultValue;
}

public static bool TryGetValueAs<TKey, TVal, TValOut>(this IDictionary<TKey, TVal> config, TKey key, out TValOut value)
public static bool TryGetValueAs<TKey, TValue, TValueOut>(this IDictionary<TKey, TValue> config, TKey key, out TValueOut value)
{
if (config.TryGetValue(key, out var tmp1))
{
if (tmp1 is TValOut tmp2)
if (tmp1 is TValueOut tmp2)
{
value = tmp2;
return true;
}

var attempt = tmp1.TryConvertTo<TValOut>();
var attempt = tmp1.TryConvertTo<TValueOut>();
if (attempt.Success)
{
value = attempt.Result;
Original file line number Diff line number Diff line change
@@ -11,11 +11,7 @@
margin-bottom: 8px;
}

.contentment .umb-form-check__text {
margin-top: 1px;
.contentment .umb-form-check__text small {
display: block;
padding-top: 0;
}

.contentment .umb-form-check__text small {
display: block;
padding-top: 0;
}
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@
description="vm.populate(item, 'description')"
sortable="vm.sortable"
allow-remove="vm.allowRemove"
allow-edit="vm.allowEdit"
allow-edit="vm.allowEdit[item.key]"
on-remove="vm.remove($index)"
on-edit="vm.edit($index)">
</umb-node-preview>
Original file line number Diff line number Diff line change
@@ -18,7 +18,6 @@ angular.module("umbraco").controller("Umbraco.Community.Contentment.DataEditors.
items: [],
maxItems: 0,
disableSorting: 0,
allowEdit: 1,
allowRemove: 1,
enableFilter: 0,
orderBy: "name",
@@ -46,13 +45,14 @@ angular.module("umbraco").controller("Umbraco.Community.Contentment.DataEditors.
});

config.itemLookup = {};
vm.allowEdit = {};

config.items.forEach(function (item) {
config.itemLookup[item.key] = item;
vm.allowEdit[item.key] = item.fields && item.fields.length > 0;
});

vm.allowAdd = (config.maxItems === 0 || config.maxItems === "0") || $scope.model.value.length < config.maxItems;
vm.allowEdit = Object.toBoolean(config.allowEdit);
vm.allowRemove = Object.toBoolean(config.allowRemove);
vm.sortable = Object.toBoolean(config.disableSorting) === false && (config.maxItems !== 1 && config.maxItems !== "1");

Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@
<p>Unable to find the editor for this configuration value.</p>
</umb-empty-state>

<umb-empty-state ng-if="vm.editor.fields.length === 0" position="center">
<umb-empty-state ng-if="!vm.editor.fields || vm.editor.fields.length === 0" position="center">
<p>There are no fields for this item.</p>
</umb-empty-state>

Original file line number Diff line number Diff line change
@@ -60,6 +60,10 @@ angular.module("umbraco").controller("Umbraco.Community.Contentment.Overlays.Con
$scope.model.size = editor.overlaySize;
}

if (!item.value) {
item.value = {};
}

vm.title = "Configure " + editor.name;
vm.editor = Object.assign({}, editor);

Original file line number Diff line number Diff line change
@@ -42,7 +42,7 @@ public DataListConfigurationEditor(ConfigurationEditorUtility utility)
Fields.Add(
DataSource,
"Data source",
"Select and configure the data source.",
"Select and configure a data source.",
configEditorViewPath,
new Dictionary<string, object>(defaultConfigEditorConfig)
{
@@ -52,7 +52,7 @@ public DataListConfigurationEditor(ConfigurationEditorUtility utility)
Fields.Add(
ListEditor,
"List editor",
"Select and configure the list editor.",
"Select and configure a list editor.",
configEditorViewPath,
new Dictionary<string, object>(defaultConfigEditorConfig)
{
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ public sealed class DataListDataEditor : IDataEditor
internal const string DataEditorAlias = Constants.Internals.DataEditorAliasPrefix + "DataList";
internal const string DataEditorName = Constants.Internals.DataEditorNamePrefix + "Data List";
internal const string DataEditorViewPath = Constants.Internals.EditorsPathRoot + "_empty.html";
internal const string DataEditorIcon = "icon-bulleted-list";
internal const string DataEditorIcon = "icon-fa fa-list-ul";

private readonly ConfigurationEditorUtility _utility;

Original file line number Diff line number Diff line change
@@ -74,7 +74,7 @@ public SqlDataListSource()
{
Key = "connectionString",
Name = "Connection string",
Description = "Enter the connection string.",
Description = "Select the connection string.",
View = IOHelper.ResolveUrl(DropdownListDataListEditor.DataEditorViewPath),
Config = new Dictionary<string, object>
{
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ public sealed class IconPickerDataEditor : DataEditor
internal const string DataEditorAlias = Constants.Internals.DataEditorAliasPrefix + "IconPicker";
internal const string DataEditorName = Constants.Internals.DataEditorNamePrefix + "Icon Picker";
internal const string DataEditorViewPath = Constants.Internals.EditorsPathRoot + "icon-picker.html";
internal const string DataEditorIcon = "icon-circle-dotted";
internal const string DataEditorIcon = "icon-fa fa-circle-o";

public IconPickerDataEditor(ILogger logger)
: base(logger)
Original file line number Diff line number Diff line change
@@ -23,33 +23,7 @@ public NotesConfigurationEditor()
IOHelper.ResolveUrl("~/umbraco/views/propertyeditors/rte/rte.html"),
new Dictionary<string, object>
{
{ "editor", new
{
maxImageSize = 500,
mode = "classic",
stylesheets = false,
toolbar = new[]
{
"ace",
"undo",
"redo",
"cut",
"styleselect",
"removeformat",
"bold",
"italic",
"alignleft",
"aligncenter",
"alignright",
"bullist",
"numlist",
"link",
"umbmediapicker",
"umbmacro",
"umbembeddialog"
},
}
}
{ "editor", Constants.Conventions.DefaultConfiguration.RichTextEditor }
});

Fields.Add(new HideLabelConfigurationField());
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ public sealed class NotesDataEditor : IDataEditor
internal const string DataEditorAlias = Constants.Internals.DataEditorAliasPrefix + "Notes";
internal const string DataEditorName = Constants.Internals.DataEditorNamePrefix + "Notes";
internal const string DataEditorViewPath = Constants.Internals.EditorsPathRoot + "notes.html";
internal const string DataEditorIcon = "icon-readonly";
internal const string DataEditorIcon = "icon-fa fa-sticky-note-o";

public string Alias => DataEditorAlias;

Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ public sealed class RadioButtonListDataListEditor : IDataListEditor

public string Name => "Radio Button List";

public string Description => "Select a single value from a list of radio buttons";
public string Description => "Select a single value from a list of radio buttons.";

public string Icon => "icon-target";

Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ public override void Migrate()
License = Constants.Package.License,
LicenseUrl = Constants.Package.LicenseUrl,
UmbracoVersion = Constants.Package.MinimumSupportedUmbracoVersion,
Version = ContentmentVersion.Version.ToString(),
Version = Configuration.ContentmentVersion.Version.ToString(),
Readme = "",
});
}
Original file line number Diff line number Diff line change
@@ -27,7 +27,7 @@ protected override TreeNode CreateRootNode(FormDataCollection queryStrings)
{
var root = base.CreateRootNode(queryStrings);

root.Icon = "icon-fa fa-dot-circle-o";
root.Icon = "icon-fa fa-cube";
root.HasChildren = false;
root.RoutePath = $"{SectionAlias}/{TreeAlias}/index";
root.MenuUrl = null;
Original file line number Diff line number Diff line change
@@ -294,7 +294,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Composing\ContentmentBootComposer.cs" />
<Compile Include="Composing\ContentmentComponentComposer.cs" />
<Compile Include="Composing\ContentmentCompositionExtensions.cs" />
<Compile Include="Configuration\ContentmentVersion.cs" />
<Compile Include="Core\Trees\TreeCollectionBuilderExtensions.cs" />
@@ -312,7 +312,6 @@
<Compile Include="DataEditors\_\ConfigurationFields\ShowIconsConfigurationField.cs" />
<Compile Include="DataEditors\_\IContentmentEditorItem.cs" />
<Compile Include="Composing\ContentmentComponent.cs" />
<Compile Include="Composing\ContentmentRunComposer.cs" />
<Compile Include="DataEditors\_\OverlaySize.cs" />
<Compile Include="Migrations\Install\RegisterUmbracoPackageEntry.cs" />
<Compile Include="Constants.cs" />
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@
<div class="umb-editor-header">
<div class="flex items-center" style="height: 100%;">
<div class="flex items-center" style="flex: 1;">
<img style="height:50px;margin-right:15px;" alt="Contentment logo" src="data:image/png;base64,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" />
<img style="height:50px;margin-right:15px;" alt="Contentment logo" src="data:image/png;base64,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" />
<div class="umb-editor-header__name-and-description" style="flex: 1 1 auto;">
<div class="umb-panel-header-name" ng-bind="vm.title"></div>
<div class="umb-panel-header-locked-description" ng-bind="vm.version"></div>
@@ -26,12 +26,38 @@

<div class="umb-package-details__main-content">

<umb-box>
<umb-box-header title="Take a break, you have reached contentment"></umb-box-header>
<umb-box-content style="background-image: url(https://images.unsplash.com/photo-1465188035480-cf3a60801ea5?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=950);background-size: cover;background-position: bottom;min-height: 925px;">
<div style="position: relative;top: 900px;text-align: right;">
<a style="background-color:black;color:white;text-decoration:none;padding:4px 6px;font-family:-apple-system, BlinkMacSystemFont,'San Francisco', 'Helvetica Neue', Helvetica, Ubuntu, Roboto, Noto, 'Segoe UI', Arial, sans-serif;font-size:12px;font-weight:bold;line-height:1.2;display:inline-block;border-radius:3px" href="https://unsplash.com/@kalenemsley?utm_medium=referral&amp;utm_campaign=photographer-credit&amp;utm_content=creditBadge" target="_blank" rel="noopener noreferrer" title="Download free do whatever you want high-resolution photos from Kalen Emsley"><span style="display:inline-block;padding:2px 3px"><svg xmlns="http://www.w3.org/2000/svg" style="height:12px;width:auto;position:relative;vertical-align:middle;top:-2px;fill:white" viewBox="0 0 32 32"><title>unsplash-logo</title><path d="M10 9V0h12v9H10zm12 5h10v18H0V14h10v9h12v-9z"></path></svg></span><span style="display:inline-block;padding:2px 3px">Kalen Emsley</span></a>
<div class="well well-large flex justify-between align-center items-center">
<div>
<h3>Do you want to stay up to date with Contentment?</h3>
<p>Sign up for our newsletter about latest Contentment package releases and community news.</p>
</div>
<div style="min-width: 200px;margin-left: 30px;">
<umb-button type="button"
label="Sign up"
button-style="primary"
size="xl"
icon="icon-fa fa-envelope mr2"
action="vm.subscribe()">
</umb-button>
</div>
</div>

<umb-box style="padding-bottom: 65px;">
<umb-box-header title="Useful links"></umb-box-header>
<umb-box-content>

<div class="umb-node-preview" ng-repeat="link in vm.links">
<div class="flex">
<i class="umb-node-preview__icon" ng-class="link.icon" aria-hidden="true"></i>
<div class="umb-node-preview__content">
<div class="umb-node-preview__name">
<a ng-href="{{link.url}}" ng-attr-target="_blank" ng-attr-rel="noopener" ng-bind="link.name"></a>
</div>
<div class="umb-node-preview__description" ng-bind="link.description"></div>
</div>
</div>
</div>

</umb-box-content>
</umb-box>

@@ -60,25 +86,6 @@
</umb-box-content>
</umb-box>

<umb-box>
<umb-box-header title="Useful links"></umb-box-header>
<umb-box-content>

<div class="umb-node-preview" ng-repeat="link in vm.links">
<div class="flex">
<i class="umb-node-preview__icon" ng-class="link.icon" aria-hidden="true"></i>
<div class="umb-node-preview__content">
<div class="umb-node-preview__name">
<a ng-href="{{link.url}}" ng-attr-target="_blank" ng-attr-rel="noopener" ng-bind="link.name"></a>
</div>
<div class="umb-node-preview__description" ng-bind="link.description"></div>
</div>
</div>
</div>

</umb-box-content>
</umb-box>

<umb-box>
<umb-box-header title="Developer"></umb-box-header>
<umb-box-content>
@@ -130,12 +137,6 @@
</umb-box-content>
</umb-box>

<umb-box>
<umb-box-content class="text-center">
<span>Copyright &copy; 2019 Lee Kelleher</span>
</umb-box-content>
</umb-box>

</div>

</div>
15 changes: 9 additions & 6 deletions src/Umbraco.Community.Contentment/Web/UI/backoffice.js
Original file line number Diff line number Diff line change
@@ -4,12 +4,10 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

angular.module("umbraco").controller("Umbraco.Community.Contentment.Tree.Controller", [
"$http",
"$scope",
"formHelper",
"$window",
"navigationService",
"umbRequestHelper",
function ($http, $scope, formHelper, navigationService, umbRequestHelper) {
function ($scope, $window, navigationService) {

// console.log("tree.model", $scope.model);

@@ -38,7 +36,7 @@ angular.module("umbraco").controller("Umbraco.Community.Contentment.Tree.Control
{
icon: "icon-fa fa-comments-o",
name: "Support forum",
url: "https://our.umbraco.com",
url: "https://our.umbraco.com/packages/backoffice-extensions/contentment/contentment-feedback/",
description: "Ask for help, the community is your friend."
},
{
@@ -62,7 +60,12 @@ angular.module("umbraco").controller("Umbraco.Community.Contentment.Tree.Control
];

vm.shareUrl = encodeURIComponent("https://github.com/leekelleher/umbraco-contentment");
vm.shareTitle = encodeURIComponent("Check out Contentment, probably the best Umbraco package in the world!");
vm.shareTitle = encodeURIComponent("Check out Contentment, innovative editor components for Umbraco CMS!");

vm.subscribe = function ($event) {
$window.open("https://tinyletter.com/umbraco-contentment", "newsletterWindow", "scrollbars=yes,width=840,height=640");
return true;
};

vm.vote = function (x) {
vm.nggyu = x == false;

0 comments on commit 388d804

Please sign in to comment.