Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
mattbrailsford committed Dec 13, 2018
2 parents 53d134b + e56d417 commit df99210
Show file tree
Hide file tree
Showing 24 changed files with 622 additions and 371 deletions.
3 changes: 2 additions & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Copyright © 2015 2015 The Outfield, Our Umbraco and other contributors
Copyright © 2018 UMCO, Our Umbraco and other contributors
Copyright © 2015 The Outfield

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
Vorto
=====

[![Build status](https://img.shields.io/appveyor/ci/mattbrailsford/umbraco-vorto.svg)](https://ci.appveyor.com/project/mattbrailsford/umbraco-vorto)
[![Build status](https://img.shields.io/appveyor/ci/UMCO/umbraco-vorto.svg)](https://ci.appveyor.com/project/UMCO/umbraco-vorto)
[![NuGet release](https://img.shields.io/nuget/v/Our.Umbraco.Vorto.svg)](https://www.nuget.org/packages/Our.Umbraco.Vorto)
[![Our Umbraco project page](https://img.shields.io/badge/our-umbraco-orange.svg)](https://our.umbraco.org/projects/backoffice-extensions/vorto)
[![Chat on Gitter](https://img.shields.io/badge/gitter-join_chat-green.svg)](https://gitter.im/mattbrailsford/umbraco-vorto)

1:1 multilingual property editor wrapper for Umbraco

Expand Down
25 changes: 15 additions & 10 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,47 +1,52 @@
os: Visual Studio 2015

# version format
version: 1.6.0.{build}
version: 1.6.1.{build}

# UMBRACO_PACKAGE_PRERELEASE_SUFFIX if a rtm release build this should be blank, otherwise if empty will default to alpha
# example UMBRACO_PACKAGE_PRERELEASE_SUFFIX=beta
init:
- set UMBRACO_PACKAGE_PRERELEASE_SUFFIX=

cache:
- src\packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified

build_script:
- build-appveyor.cmd
- build-appveyor.cmd

artifacts:
- path: artifacts\*.nupkg
- path: artifacts\*.zip

deploy:
# MyGet Deployment for builds & releases
# MyGet Deployment for builds & releases
- provider: NuGet
server: https://www.myget.org/F/umbraco-vorto/
symbol_server: https://nuget.symbolsource.org/MyGet/umbraco-vorto
server: https://www.myget.org/F/umbraco-packages/api/v2/package
# symbol_server: https://www.myget.org/F/umbraco-packages/symbols/api/v2/package
skip_symbols: true
api_key:
secure: gHDTL46KZcLzj6J8m//TJgaCOJCl9ixR//rXjO18HRlCsfPYYz7dU81u2D5zd+ZN
secure: 36/Ax5O+e6wENlhoTwgvoEBZV3FG4XjF429SNTej2qsGTAL+cdfA1kT/tm1St8vx
artifact: /.*\.nupkg/
on:
branch: develop

# GitHub Deployment for releases
# GitHub Deployment for releases
- provider: GitHub
auth_token:
secure: GyY9va9/RfmO6mK7xMhaciO9mtep3HYW0DEPeFVUBbYvZGRjk8enQ/tW6id6yE7D
secure: yDxrRTveSScJA35MQTOaLYVjoPKFKl2bHBkG+JMZjiN0r7AfuUCxVU3CgW8Imu4h
artifact: /.*\.zip/ # upload all Zip packages to release assets
draft: false
prerelease: false
on:
branch: master
appveyor_repo_tag: true # deploy on tag push only

# NuGet Deployment for releases
# NuGet Deployment for releases
- provider: NuGet
server:
skip_symbols: true
api_key:
secure: q2Aov00i+eWTpbwWHB1JN8EAGw4o8FaOC2lj2MolyS6TGkUUFTJK/vQTQzaf/EQ5
secure: vEophXSqus5F60LRBY4/j1l6K/S5+n3/yYpiID3O7JJW1gyj+0q0enuHhN3tgdhl
artifact: /.*\.nupkg/
on:
branch: master
Expand Down
2 changes: 1 addition & 1 deletion build/package.proj
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@
OutputDirectory="$(ArtifactsDir)"
Files="@(PackageFiles)" />

<MSBuild.NuGet.Tasks.Pack NuGetExePath="$(RootDir)\src\.nuget\NuGet.exe"
<MSBuild.NuGet.Tasks.Pack NuGetExePath="$(RootDir)\build\tools\NuGet\NuGet.exe"
ManifestFile="$(BuildNuGetDir)\package.nuspec"
BasePath="$(BuildNuGetDir)"
Version="$(ProductVersion)"
Expand Down
File renamed without changes.
Binary file modified build/tools/NuGet/NuGet.exe
Binary file not shown.
4 changes: 2 additions & 2 deletions src/.nuget/NuGet.targets → build/tools/NuGet/NuGet.targets
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), "..", "build", "tools", "NuGet"))</NuGetToolsPath>
</PropertyGroup>

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
<NuGetToolsPath>$(SolutionDir)../build/tools/NuGet</NuGetToolsPath>
</PropertyGroup>

<PropertyGroup>
Expand Down
Binary file removed src/.nuget/NuGet.exe
Binary file not shown.
16 changes: 6 additions & 10 deletions src/Our.Umbraco.Vorto.sln
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@

Microsoft Visual Studio Solution File, Format Version 14.00
# Visual Studio 2015
VisualStudioVersion = 14.0.22823.1
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Our.Umbraco.Vorto", "Our.Umbraco.Vorto\Our.Umbraco.Vorto.csproj", "{B26558EC-3502-4879-A2CB-1E668CB43D09}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{17DAAEDF-EF03-46AF-BF4A-D9A4D2365A06}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -26,4 +19,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {20D4A4FE-ECA9-4D6A-A35F-436AAEBF1919}
EndGlobalSection
EndGlobal
3 changes: 2 additions & 1 deletion src/Our.Umbraco.Vorto/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
internal static class Constants
{
public const string CacheKey_GetTargetDataTypeDefinition = "Vorto_GetTargetDataTypeDefinition_";
}
public const string CacheKey_GetInnerPublishedPropertyType = "Vorto_GetInnerPublishedPropertyType_";
}
}
79 changes: 74 additions & 5 deletions src/Our.Umbraco.Vorto/Converters/VortoValueConverter.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
using System;
using System.Reflection;
using Newtonsoft.Json;
using Our.Umbraco.Vorto.Helpers;
using Our.Umbraco.Vorto.Models;
using System.Linq;
using Umbraco.Core;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PropertyEditors;

namespace Our.Umbraco.Vorto.Converters
{
[PropertyValueType(typeof(VortoValue))]
[PropertyValueCache(PropertyCacheValue.All, PropertyCacheLevel.Content)]
public class VortoValueConverter : PropertyValueConverterBase
public class VortoValueConverter : PropertyValueConverterBase, IPropertyValueConverterMeta
{
public override bool IsConverter(PublishedPropertyType propertyType)
{
Expand All @@ -21,10 +22,24 @@ public override object ConvertDataToSource(PublishedPropertyType propertyType, o
{
try
{
if (source != null && !source.ToString().IsNullOrWhiteSpace())
if (source == null || source.ToString().IsNullOrWhiteSpace())
return null;

var model = JsonConvert.DeserializeObject<VortoValue>(source.ToString());
if (model.Values == null)
return null;

var innerPropType = VortoHelper.GetInnerPublishedPropertyType(propertyType);
if (innerPropType == null)
return null;

var modelKeys = model.Values.Keys.ToArray();
foreach (var key in modelKeys)
{
return JsonConvert.DeserializeObject<VortoValue>(source.ToString());
model.Values[key] = innerPropType.ConvertDataToSource(model.Values[key], preview);
}

return model;
}
catch (Exception e)
{
Expand All @@ -33,5 +48,59 @@ public override object ConvertDataToSource(PublishedPropertyType propertyType, o

return null;
}

public override object ConvertSourceToObject(PublishedPropertyType propertyType, object source, bool preview)
{
var vortoValue = source as VortoValue;
if (vortoValue != null)
{
var innerPropType = VortoHelper.GetInnerPublishedPropertyType(propertyType);
if (innerPropType != null) {

var type = GetPropertyValueType(propertyType);
var model = Activator.CreateInstance(type);

var dtdGuidProp = type.GetProperty("DtdGuid", BindingFlags.Instance | BindingFlags.Public);
if (dtdGuidProp != null && dtdGuidProp.CanWrite) dtdGuidProp.SetValue(model, vortoValue.DtdGuid);

var valuesProp = type.GetProperty("Values", BindingFlags.Instance | BindingFlags.Public);
var valuesAdd = valuesProp.PropertyType.GetMethod("Add", new[] { typeof(string), innerPropType.ClrType });

var modelKeys = vortoValue.Values.Keys.ToArray();
foreach (var key in modelKeys)
{
var value = innerPropType.ConvertSourceToObject(vortoValue.Values[key], preview);
if (innerPropType.ClrType.IsAssignableFrom(value.GetType()))
{
valuesAdd.Invoke(valuesProp.GetValue(model), new[] { key, value });
}
else
{
var attempt = value.TryConvertTo(innerPropType.ClrType);
if (attempt.Success)
valuesAdd.Invoke(valuesProp.GetValue(model), new[] { key, attempt.Result });
}
}

return model;
}
}

return base.ConvertSourceToObject(propertyType, source, preview);
}

public Type GetPropertyValueType(PublishedPropertyType propertyType)
{
var innerPropType = VortoHelper.GetInnerPublishedPropertyType(propertyType);

return innerPropType != null
? typeof(VortoValue<>).MakeGenericType(innerPropType.ClrType)
: typeof(VortoValue<object>);
}

public PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType, PropertyCacheValue cacheValue)
{
return PropertyCacheLevel.Content;
}
}
}
Loading

0 comments on commit df99210

Please sign in to comment.