Merge remote-tracking branch 'origin/v8/dev' into netcore/dev

# Conflicts:
#	src/Umbraco.Core/Umbraco.Core.csproj
#	src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs
#	src/Umbraco.Web/Editors/UpdateCheckController.cs
#	src/Umbraco.Web/Install/InstallHelper.cs
This commit is contained in:
Bjarke Berg
2020-02-20 08:06:37 +01:00
34 changed files with 385 additions and 534 deletions
+38
View File
@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Umbraco.Core.Models
{
public class InstallLog
{
public Guid InstallId { get; }
public bool IsUpgrade { get; set; }
public bool InstallCompleted { get; set; }
public DateTime Timestamp { get; set; }
public int VersionMajor { get; }
public int VersionMinor { get; }
public int VersionPatch { get; }
public string VersionComment { get; }
public string Error { get; }
public string UserAgent { get; }
public string DbProvider { get; set; }
public InstallLog(Guid installId, bool isUpgrade, bool installCompleted, DateTime timestamp, int versionMajor, int versionMinor, int versionPatch, string versionComment, string error, string userAgent, string dbProvider)
{
InstallId = installId;
IsUpgrade = isUpgrade;
InstallCompleted = installCompleted;
Timestamp = timestamp;
VersionMajor = versionMajor;
VersionMinor = versionMinor;
VersionPatch = versionPatch;
VersionComment = versionComment;
Error = error;
UserAgent = userAgent;
DbProvider = dbProvider;
}
}
}
@@ -0,0 +1,11 @@
using System;
using System.Threading.Tasks;
using Umbraco.Core.Models;
namespace Umbraco.Core.Persistence.Repositories
{
public interface IInstallationRepository
{
Task SaveInstallLogAsync(InstallLog installLog);
}
}
@@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Semver;
using Umbraco.Core.Models;
namespace Umbraco.Core.Persistence.Repositories
{
public interface IUpgradeCheckRepository
{
Task<UpgradeResult> CheckUpgradeAsync(SemVersion version);
}
}
@@ -0,0 +1,28 @@
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Threading.Tasks;
using Umbraco.Core.Models;
namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class InstallationRepository : IInstallationRepository
{
private static HttpClient _httpClient;
private const string RestApiInstallUrl = "https://our.umbraco.com/umbraco/api/Installation/Install";
public async Task SaveInstallLogAsync(InstallLog installLog)
{
try
{
if (_httpClient == null)
_httpClient = new HttpClient();
await _httpClient.PostAsync(RestApiInstallUrl, installLog, new JsonMediaTypeFormatter());
}
// this occurs if the server for Our is down or cannot be reached
catch (HttpRequestException)
{ }
}
}
}
@@ -0,0 +1,49 @@
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Threading.Tasks;
using Semver;
using Umbraco.Core.Models;
namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class UpgradeCheckRepository : IUpgradeCheckRepository
{
private static HttpClient _httpClient;
private const string RestApiUpgradeChecklUrl = "https://our.umbraco.com/umbraco/api/UpgradeCheck/CheckUpgrade";
public async Task<UpgradeResult> CheckUpgradeAsync(SemVersion version)
{
try
{
if (_httpClient == null)
_httpClient = new HttpClient();
var task = await _httpClient.PostAsync(RestApiUpgradeChecklUrl, new CheckUpgradeDto(version), new JsonMediaTypeFormatter());
var result = await task.Content.ReadAsAsync<UpgradeResult>();
return result ?? new UpgradeResult("None", "", "");
}
catch (HttpRequestException)
{
// this occurs if the server for Our is down or cannot be reached
return new UpgradeResult("None", "", "");
}
}
private class CheckUpgradeDto
{
public CheckUpgradeDto(SemVersion version)
{
VersionMajor = version.Major;
VersionMinor = version.Minor;
VersionPatch = version.Patch;
VersionComment = version.Prerelease;
}
public int VersionMajor { get; }
public int VersionMinor { get; }
public int VersionPatch { get; }
public string VersionComment { get; }
}
}
}
+16
View File
@@ -0,0 +1,16 @@
namespace Umbraco.Core.Models
{
public class UpgradeResult
{
public string UpgradeType { get; }
public string Comment { get; }
public string UpgradeUrl { get; }
public UpgradeResult(string upgradeType, string comment, string upgradeUrl)
{
UpgradeType = upgradeType;
Comment = comment;
UpgradeUrl = upgradeUrl;
}
}
}
@@ -0,0 +1,23 @@
using System.Threading.Tasks;
using Semver;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Services;
namespace Umbraco.Core
{
internal class UpgradeService : IUpgradeService
{
private readonly IUpgradeCheckRepository _upgradeCheckRepository;
public UpgradeService(IUpgradeCheckRepository upgradeCheckRepository)
{
_upgradeCheckRepository = upgradeCheckRepository;
}
public async Task<UpgradeResult> CheckUpgrade(SemVersion version)
{
return await _upgradeCheckRepository.CheckUpgradeAsync(version);
}
}
}
@@ -47,6 +47,8 @@ namespace Umbraco.Core.Composing.CompositionExtensions
composition.RegisterUnique<IScriptRepository, ScriptRepository>();
composition.RegisterUnique<IStylesheetRepository, StylesheetRepository>();
composition.RegisterUnique<IContentTypeCommonRepository, ContentTypeCommonRepository>();
composition.RegisterUnique<IInstallationRepository, InstallationRepository>();
composition.RegisterUnique<IUpgradeCheckRepository, UpgradeCheckRepository>();
return composition;
}
@@ -543,6 +543,16 @@ ORDER BY colName";
}
}
// If userlogin or the email has changed then need to reset security stamp
if (changedCols.Contains("userLogin") || changedCols.Contains("userEmail"))
{
userDto.EmailConfirmedDate = null;
userDto.SecurityStampToken = entity.SecurityStamp = Guid.NewGuid().ToString();
changedCols.Add("emailConfirmedDate");
changedCols.Add("securityStampToken");
}
//only update the changed cols
if (changedCols.Count > 0)
{
@@ -19,11 +19,13 @@ using Umbraco.Core.PropertyEditors.Validators;
using Umbraco.Core.Scoping;
using Umbraco.Core.Serialization;
using Umbraco.Core.Services;
using Umbraco.Core.Services.Implement;
using Umbraco.Core.Strings;
using Umbraco.Core.Sync;
using Umbraco.Web.Models.PublishedContent;
using Umbraco.Web.PublishedCache;
using Umbraco.Web;
using Umbraco.Web.Migrations.PostMigrations;
using Umbraco.Web.PropertyEditors;
using Umbraco.Web.Services;
using IntegerValidator = Umbraco.Core.PropertyEditors.Validators.IntegerValidator;
@@ -143,8 +145,8 @@ namespace Umbraco.Core.Runtime
// by default, register a noop factory
composition.RegisterUnique<IPublishedModelFactory, NoopPublishedModelFactory>();
// by default, register a noop rebuilder
composition.RegisterUnique<IPublishedSnapshotRebuilder, NoopPublishedSnapshotRebuilder>();
// by default
composition.RegisterUnique<IPublishedSnapshotRebuilder, PublishedSnapshotRebuilder>();
composition.SetCultureDictionaryFactory<DefaultCultureDictionaryFactory>();
composition.Register(f => f.GetInstance<ICultureDictionaryFactory>().CreateDictionary(), Lifetime.Singleton);
@@ -160,6 +162,10 @@ namespace Umbraco.Core.Runtime
// register core CMS dashboards and 3rd party types - will be ordered by weight attribute & merged with package.manifest dashboards
composition.Dashboards()
.Add(composition.TypeLoader.GetTypes<IDashboard>());
// will be injected in controllers when needed to invoke rest endpoints on Our
composition.RegisterUnique<IInstallationService, InstallationService>();
composition.RegisterUnique<IUpgradeService, UpgradeService>();
}
}
}
@@ -0,0 +1,10 @@
using System.Threading.Tasks;
using Umbraco.Core.Models;
namespace Umbraco.Core.Services
{
public interface IInstallationService
{
Task LogInstall(InstallLog installLog);
}
}
@@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Semver;
using Umbraco.Core.Models;
namespace Umbraco.Core.Services
{
public interface IUpgradeService
{
Task<UpgradeResult> CheckUpgrade(SemVersion version);
}
}
@@ -0,0 +1,21 @@
using System.Threading.Tasks;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Repositories;
namespace Umbraco.Core.Services.Implement
{
public class InstallationService : IInstallationService
{
private readonly IInstallationRepository _installationRepository;
public InstallationService(IInstallationRepository installationRepository)
{
_installationRepository = installationRepository;
}
public async Task LogInstall(InstallLog installLog)
{
await _installationRepository.SaveInstallLogAsync(installLog);
}
}
}
@@ -423,6 +423,35 @@ namespace Umbraco.Tests.Persistence.Repositories
}
}
[Test]
public void Can_Invalidate_SecurityStamp_On_Username_Change()
{
// Arrange
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
var repository = CreateRepository(provider);
var userGroupRepository = CreateUserGroupRepository(provider);
var user = CreateAndCommitUserWithGroup(repository, userGroupRepository);
var originalSecurityStamp = user.SecurityStamp;
// Ensure when user generated a security stamp is present
Assert.That(user.SecurityStamp, Is.Not.Null);
Assert.That(user.SecurityStamp, Is.Not.Empty);
// Update username
user.Username = user.Username + "UPDATED";
repository.Save(user);
// Get the user
var updatedUser = repository.Get(user.Id);
// Ensure the Security Stamp is invalidated & no longer the same
Assert.AreNotEqual(originalSecurityStamp, updatedUser.SecurityStamp);
}
}
private void AssertPropertyValues(IUser updatedItem, IUser originalUser)
{
Assert.That(updatedItem.Id, Is.EqualTo(originalUser.Id));
+3 -3
View File
@@ -1109,9 +1109,9 @@
"integrity": "sha512-kU/fHIGf2a4a3bH7E1tzALTHk+QfoUSCK9fEcMFisd6ZWvNDwPzXWAilItqOC3EDiAXPmGHaNc9/aXiD9xrAxQ=="
},
"angular-aria": {
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.7.5.tgz",
"integrity": "sha512-X2dGRw+PK7hrV7/X1Ns4e5P3KC/OBFi1l7z//D/v7zbZObsAx48qBoX7unsck+s4+mnO+ikNNkHG5N49VfAyRw=="
"version": "1.7.9",
"resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.7.9.tgz",
"integrity": "sha512-luI3Jemd1AbOQW0krdzfEG3fM0IFtLY0bSSqIDEx3POE0XjKIC1MkrO8Csyq9PPgueLphyAPofzUwZ8YeZ88SA=="
},
"angular-chart.js": {
"version": "1.1.1",
+1 -1
View File
@@ -13,7 +13,7 @@
"ace-builds": "1.4.2",
"angular": "1.7.9",
"angular-animate": "1.7.5",
"angular-aria": "1.7.5",
"angular-aria": "1.7.9",
"angular-chart.js": "^1.1.1",
"angular-cookies": "1.7.5",
"angular-dynamic-locale": "0.1.37",
@@ -71,6 +71,7 @@
templateUrl: 'views/components/forms/umb-checkbox.html',
controller: UmbCheckboxController,
controllerAs: 'vm',
transclude: true,
bindings: {
model: "=",
inputId: "@",
@@ -69,6 +69,7 @@
templateUrl: 'views/components/forms/umb-radiobutton.html',
controller: UmbRadiobuttonController,
controllerAs: 'vm',
transclude: true,
bindings: {
model: "=",
inputId: "@",
@@ -169,6 +169,7 @@ When building a custom infinite editor view you can use the same components as a
let editorsKeyboardShorcuts = [];
var editors = [];
var isEnabled = true;
var lastElementInFocus = null;
// events for backdrop
@@ -261,6 +262,12 @@ When building a custom infinite editor view you can use the same components as a
*/
unbindKeyboardShortcuts();
// if this is the first editor layer, save the currently focused element
// so we can re-apply focus to it once all the editor layers are closed
if (editors.length === 0) {
lastElementInFocus = document.activeElement;
}
// set flag so we know when the editor is open in "infinite mode"
editor.infiniteMode = true;
@@ -301,6 +308,10 @@ When building a custom infinite editor view you can use the same components as a
$timeout(function() {
// rebind keyboard shortcuts for the new editor in focus
rebindKeyboardShortcuts();
if (editors.length === 0 && lastElementInFocus) {
lastElementInFocus.focus();
}
}, 0);
}
@@ -3,15 +3,21 @@
.umb-form-check {
display: flex;
flex-wrap: wrap;
align-items: center;
position: relative;
padding: 0 0 0 26px !important;
padding-left: 0px;
margin: 0;
min-height: 22px;
line-height: 22px;
cursor: pointer !important;
.umb-form-check__symbol {
margin-top: 1px;
margin-right: 10px;
}
.umb-form-check__info {
}
&.-small-text{
font-size: 13px;
}
@@ -22,7 +28,6 @@
&__text {
position: relative;
top: 1px;
user-select: none;
}
@@ -90,10 +95,6 @@
&__state {
display: flex;
height: 18px;
margin-top: 2px;
position: absolute;
top: 0;
left: 0;
}
&__check {
@@ -101,6 +102,7 @@
position: relative;
background: @white;
border: 1px solid @inputBorder;
border-radius: @baseBorderRadius;
width: @checkboxWidth;
height: @checkboxHeight;
@@ -4,16 +4,21 @@
.icon {
position: absolute;
padding: 5px 8px;
width: 30px;
height: 30px;
display: flex;
justify-content: center;
align-items: center;
margin: 1px;
padding: 0;
pointer-events: none;
top: 2px;
color: @ui-action-discreet-type;
transition: color .1s linear;
}
input {
width: 0px;
padding-left:24px;
padding-left: 24px;
margin-bottom: 0px;
background-color: transparent;
border-color: @ui-action-discreet-border;
@@ -1,22 +1,28 @@
<label class="checkbox umb-form-check umb-form-check--checkbox {{vm.cssClass}}" ng-class="{ 'umb-form-check--disabled': vm.disabled }">
<input type="checkbox"
id="{{vm.inputId}}"
name="{{vm.name}}"
value="{{vm.value}}"
class="umb-form-check__input"
val-server-field="{{vm.serverValidationField}}"
ng-model="vm.model"
ng-disabled="vm.disabled"
ng-required="vm.required"
ng-change="vm.change()"/>
<span class="umb-form-check__state" aria-hidden="true">
<span class="umb-form-check__check">
<i class="umb-form-check__icon icon-check"></i>
<div class="umb-form-check__symbol">
<input type="checkbox"
id="{{vm.inputId}}"
name="{{vm.name}}"
value="{{vm.value}}"
class="umb-form-check__input"
val-server-field="{{vm.serverValidationField}}"
ng-model="vm.model"
ng-disabled="vm.disabled"
ng-required="vm.required"
ng-change="vm.change()"/>
<span class="umb-form-check__state" aria-hidden="true">
<span class="umb-form-check__check">
<i class="umb-form-check__icon icon-check"></i>
</span>
</span>
</span>
</div>
<div class="umb-form-check__info" ng-transclude>
<i ng-if="vm.iconClass.length" class="{{vm.iconClass}}" aria-hidden="true"></i>
<i ng-if="vm.iconClass.length" class="{{vm.iconClass}}" aria-hidden="true"></i>
<span ng-if="vm.text.length" class="umb-form-check__text">{{vm.text}}</span>
<span ng-if="vm.text.length" class="umb-form-check__text">{{vm.text}}</span>
</div>
</label>
@@ -1,16 +1,20 @@
<label class="radio umb-form-check umb-form-check--radiobutton" ng-class="{ 'umb-form-check--disabled': vm.disabled }">
<input type="radio"
id="{{vm.inputId}}"
name="{{vm.name}}"
value="{{vm.value}}"
class="umb-form-check__input"
ng-model="vm.model"
ng-disabled="vm.disabled"
ng-required="vm.required"
ng-change="vm.change()" />
<div class="umb-form-check__symbol">
<input type="radio"
id="{{vm.inputId}}"
name="{{vm.name}}"
value="{{vm.value}}"
class="umb-form-check__input"
ng-model="vm.model"
ng-disabled="vm.disabled"
ng-required="vm.required"
ng-change="vm.change()" />
<span class="umb-form-check__state" aria-hidden="true">
<span class="umb-form-check__check"></span>
</span>
<span class="umb-form-check__text">{{vm.text}}</span>
<span class="umb-form-check__state" aria-hidden="true">
<span class="umb-form-check__check"></span>
</span>
</div>
<div class="umb-form-check__info" ng-transclude>
<span class="umb-form-check__text">{{vm.text}}</span>
</div>
</label>
@@ -1,4 +1,4 @@
<div>
<umb-load-indicator ng-if="isLoading"></umb-load-indicator>
<div class="umb-rte" id="{{textAreaHtmlId}}" ng-style="{ visibility : isLoading ? 'hidden' : 'visible' }"></div>
<div disable-hotkeys class="umb-rte" id="{{textAreaHtmlId}}" ng-style="{ visibility : isLoading ? 'hidden' : 'visible' }"></div>
</div>
@@ -1,5 +1,5 @@
<ng-form class="umb-mini-search" ng-class="{'--has-value': vm.model !== null && vm.model !== ''}" novalidate>
<i class="icon icon-search"></i>
<i class="icon icon-search" aria-hidden="true"></i>
<input
class="form-control search-input"
type="text"
@@ -2,11 +2,14 @@
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Web.Http.Filters;
using Semver;
using Umbraco.Core;
using Umbraco.Web.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
@@ -15,15 +18,19 @@ namespace Umbraco.Web.Editors
[PluginController("UmbracoApi")]
public class UpdateCheckController : UmbracoAuthorizedJsonController
{
private readonly IUpgradeService _upgradeService;
private readonly IUmbracoVersion _umbracoVersion;
public UpdateCheckController (IUmbracoVersion umbracoVersion)
public UpdateCheckController() { }
public UpdateCheckController(IUpgradeService upgradeService, IUmbracoVersion umbracoVersion)
{
_upgradeService = upgradeService;
_umbracoVersion = umbracoVersion;
}
[UpdateCheckResponseFilter]
public UpgradeCheckResponse GetCheck()
public async Task<UpgradeCheckResponse> GetCheck()
{
var updChkCookie = Request.Headers.GetCookies("UMB_UPDCHK").FirstOrDefault();
var updateCheckCookie = updChkCookie != null ? updChkCookie["UMB_UPDCHK"].Value : "";
@@ -31,14 +38,11 @@ namespace Umbraco.Web.Editors
{
try
{
var check = new org.umbraco.update.CheckForUpgrade { Timeout = 2000 };
var version = new SemVersion(_umbracoVersion.Current.Major, _umbracoVersion.Current.Minor,
_umbracoVersion.Current.Build, _umbracoVersion.Comment);
var result = await _upgradeService.CheckUpgrade(version);
var result = check.CheckUpgrade(_umbracoVersion.Current.Major,
_umbracoVersion.Current.Minor,
_umbracoVersion.Current.Build,
_umbracoVersion.Comment);
return new UpgradeCheckResponse(result.UpgradeType.ToString(), result.Comment, result.UpgradeUrl, _umbracoVersion);
return new UpgradeCheckResponse(result.UpgradeType, result.Comment, result.UpgradeUrl);
}
catch (System.Net.WebException)
{
+23 -15
View File
@@ -2,13 +2,16 @@
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Services;
using Umbraco.Web.Composing;
using Umbraco.Web.Install.Models;
@@ -23,11 +26,16 @@ namespace Umbraco.Web.Install
private readonly IGlobalSettings _globalSettings;
private readonly IUmbracoVersion _umbracoVersion;
private readonly IConnectionStrings _connectionStrings;
private readonly IInstallationService _installationService;
private InstallationType? _installationType;
public InstallHelper(IHttpContextAccessor httpContextAccessor,
DatabaseBuilder databaseBuilder,
ILogger logger, IGlobalSettings globalSettings, IUmbracoVersion umbracoVersion, IConnectionStrings connectionStrings)
ILogger logger,
IGlobalSettings globalSettings,
IUmbracoVersion umbracoVersion,
IConnectionStrings connectionStrings,
IInstallationService installationService)
{
_httpContextAccessor = httpContextAccessor;
_logger = logger;
@@ -35,6 +43,7 @@ namespace Umbraco.Web.Install
_umbracoVersion = umbracoVersion;
_databaseBuilder = databaseBuilder;
_connectionStrings = connectionStrings ?? throw new ArgumentNullException(nameof(connectionStrings));
_installationService = installationService;
}
public InstallationType GetInstallationType()
@@ -42,7 +51,7 @@ namespace Umbraco.Web.Install
return _installationType ?? (_installationType = IsBrandNewInstall ? InstallationType.NewInstall : InstallationType.Upgrade).Value;
}
internal void InstallStatus(bool isCompleted, string errorMsg)
internal async Task InstallStatus(bool isCompleted, string errorMsg)
{
try
{
@@ -61,8 +70,12 @@ namespace Umbraco.Web.Install
if (installId == Guid.Empty)
installId = Guid.NewGuid();
}
else
{
installId = Guid.NewGuid(); // Guid.TryParse will have reset installId to Guid.Empty
}
}
httpContext.Response.Cookies.Set(new HttpCookie(Constants.Web.InstallerCookieName, "1"));
httpContext.Response.Cookies.Set(new HttpCookie(Constants.Web.InstallerCookieName, installId.ToString()));
var dbProvider = string.Empty;
if (IsBrandNewInstall == false)
@@ -72,18 +85,13 @@ namespace Umbraco.Web.Install
dbProvider = GetDbProviderString(Current.SqlContext);
}
var check = new org.umbraco.update.CheckForUpgrade();
check.Install(installId,
IsBrandNewInstall == false,
isCompleted,
DateTime.Now,
_umbracoVersion.Current.Major,
_umbracoVersion.Current.Minor,
_umbracoVersion.Current.Build,
_umbracoVersion.Comment,
errorMsg,
userAgent,
dbProvider);
var installLog = new InstallLog(installId: installId, isUpgrade: IsBrandNewInstall == false,
installCompleted: isCompleted, timestamp: DateTime.Now, versionMajor: _umbracoVersion.Current.Major,
versionMinor: _umbracoVersion.Current.Minor, versionPatch: _umbracoVersion.Current.Build,
versionComment: _umbracoVersion.Comment, error: errorMsg, userAgent: userAgent,
dbProvider: dbProvider);
await _installationService.LogInstall(installLog);
}
catch (Exception ex)
{
+5 -10
View File
@@ -652,6 +652,8 @@
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
<Compile Include="UriUtility.cs" />
<Compile Include="UmbracoAuthorizedHttpHandler.cs" />
<Compile Include="UmbracoHttpHandler.cs" />
<Compile Include="UmbracoWebService.cs">
<SubType>Component</SubType>
@@ -674,22 +676,12 @@
<EmbeddedResource Include="JavaScript\JsInitialize.js" />
<EmbeddedResource Include="JavaScript\ServerVariables.js" />
</ItemGroup>
<ItemGroup>
<WebReferences Include="Web References\" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="JavaScript\PreviewInitialize.js" />
<None Include="JavaScript\TinyMceInitialize.js" />
<!--<Content Include="umbraco.presentation\umbraco\users\PermissionEditor.aspx" />-->
</ItemGroup>
<ItemGroup>
<None Include="Web References\org.umbraco.update\checkforupgrade.disco" />
<None Include="Web References\org.umbraco.update\checkforupgrade.wsdl" />
<None Include="Web References\org.umbraco.update\Reference.map">
<Generator>MSDiscoCodeGenerator</Generator>
<LastGenOutput>Reference.cs</LastGenOutput>
<SubType>Designer</SubType>
</None>
<None Include="..\Umbraco.Web.UI\Views\web.config">
<Link>Mvc\web.config</Link>
</None>
@@ -698,6 +690,9 @@
</None>
<None Include="Web References\org.umbraco.update\UpgradeResult1.datasource">
<DependentUpon>Reference.map</DependentUpon>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
@@ -1,286 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
//
// This source code was auto-generated by Microsoft.VSDesigner, Version 4.0.30319.42000.
//
#pragma warning disable 1591
namespace Umbraco.Web.org.umbraco.update {
using System;
using System.Web.Services;
using System.Diagnostics;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.ComponentModel;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.7.3062.0")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="CheckForUpgradeSoap", Namespace="http://update.umbraco.org/")]
public partial class CheckForUpgrade : System.Web.Services.Protocols.SoapHttpClientProtocol {
private System.Threading.SendOrPostCallback InstallOperationCompleted;
private System.Threading.SendOrPostCallback CheckUpgradeOperationCompleted;
private bool useDefaultCredentialsSetExplicitly;
/// <remarks/>
public CheckForUpgrade() {
this.Url = "http://update.umbraco.org/checkforupgrade.asmx";
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
public new string Url {
get {
return base.Url;
}
set {
if ((((this.IsLocalFileSystemWebService(base.Url) == true)
&& (this.useDefaultCredentialsSetExplicitly == false))
&& (this.IsLocalFileSystemWebService(value) == false))) {
base.UseDefaultCredentials = false;
}
base.Url = value;
}
}
public new bool UseDefaultCredentials {
get {
return base.UseDefaultCredentials;
}
set {
base.UseDefaultCredentials = value;
this.useDefaultCredentialsSetExplicitly = true;
}
}
/// <remarks/>
public event InstallCompletedEventHandler InstallCompleted;
/// <remarks/>
public event CheckUpgradeCompletedEventHandler CheckUpgradeCompleted;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://update.umbraco.org/Install", RequestNamespace="http://update.umbraco.org/", ResponseNamespace="http://update.umbraco.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void Install(System.Guid installId, bool isUpgrade, bool installCompleted, System.DateTime timestamp, int versionMajor, int versionMinor, int versionPatch, string versionComment, string error, string userAgent, string dbProvider) {
this.Invoke("Install", new object[] {
installId,
isUpgrade,
installCompleted,
timestamp,
versionMajor,
versionMinor,
versionPatch,
versionComment,
error,
userAgent,
dbProvider});
}
/// <remarks/>
public void InstallAsync(System.Guid installId, bool isUpgrade, bool installCompleted, System.DateTime timestamp, int versionMajor, int versionMinor, int versionPatch, string versionComment, string error, string userAgent, string dbProvider) {
this.InstallAsync(installId, isUpgrade, installCompleted, timestamp, versionMajor, versionMinor, versionPatch, versionComment, error, userAgent, dbProvider, null);
}
/// <remarks/>
public void InstallAsync(System.Guid installId, bool isUpgrade, bool installCompleted, System.DateTime timestamp, int versionMajor, int versionMinor, int versionPatch, string versionComment, string error, string userAgent, string dbProvider, object userState) {
if ((this.InstallOperationCompleted == null)) {
this.InstallOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallOperationCompleted);
}
this.InvokeAsync("Install", new object[] {
installId,
isUpgrade,
installCompleted,
timestamp,
versionMajor,
versionMinor,
versionPatch,
versionComment,
error,
userAgent,
dbProvider}, this.InstallOperationCompleted, userState);
}
private void OnInstallOperationCompleted(object arg) {
if ((this.InstallCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.InstallCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://update.umbraco.org/CheckUpgrade", RequestNamespace="http://update.umbraco.org/", ResponseNamespace="http://update.umbraco.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public UpgradeResult CheckUpgrade(int versionMajor, int versionMinor, int versionPatch, string versionComment) {
object[] results = this.Invoke("CheckUpgrade", new object[] {
versionMajor,
versionMinor,
versionPatch,
versionComment});
return ((UpgradeResult)(results[0]));
}
/// <remarks/>
public void CheckUpgradeAsync(int versionMajor, int versionMinor, int versionPatch, string versionComment) {
this.CheckUpgradeAsync(versionMajor, versionMinor, versionPatch, versionComment, null);
}
/// <remarks/>
public void CheckUpgradeAsync(int versionMajor, int versionMinor, int versionPatch, string versionComment, object userState) {
if ((this.CheckUpgradeOperationCompleted == null)) {
this.CheckUpgradeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckUpgradeOperationCompleted);
}
this.InvokeAsync("CheckUpgrade", new object[] {
versionMajor,
versionMinor,
versionPatch,
versionComment}, this.CheckUpgradeOperationCompleted, userState);
}
private void OnCheckUpgradeOperationCompleted(object arg) {
if ((this.CheckUpgradeCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckUpgradeCompleted(this, new CheckUpgradeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
private bool IsLocalFileSystemWebService(string url) {
if (((url == null)
|| (url == string.Empty))) {
return false;
}
System.Uri wsUri = new System.Uri(url);
if (((wsUri.Port >= 1024)
&& (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
return true;
}
return false;
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3062.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://update.umbraco.org/")]
public partial class UpgradeResult {
private string commentField;
private UpgradeType upgradeTypeField;
private string upgradeUrlField;
/// <remarks/>
public string Comment {
get {
return this.commentField;
}
set {
this.commentField = value;
}
}
/// <remarks/>
public UpgradeType UpgradeType {
get {
return this.upgradeTypeField;
}
set {
this.upgradeTypeField = value;
}
}
/// <remarks/>
public string UpgradeUrl {
get {
return this.upgradeUrlField;
}
set {
this.upgradeUrlField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3062.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://update.umbraco.org/")]
public enum UpgradeType {
/// <remarks/>
None,
/// <remarks/>
Patch,
/// <remarks/>
Minor,
/// <remarks/>
Major,
/// <remarks/>
Critical,
/// <remarks/>
Error,
/// <remarks/>
OutOfSync,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.7.3062.0")]
public delegate void InstallCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.7.3062.0")]
public delegate void CheckUpgradeCompletedEventHandler(object sender, CheckUpgradeCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.7.3062.0")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckUpgradeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal CheckUpgradeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public UpgradeResult Result {
get {
this.RaiseExceptionIfNecessary();
return ((UpgradeResult)(this.results[0]));
}
}
}
}
#pragma warning restore 1591
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://update.umbraco.org/checkforupgrade.asmx?wsdl" filename="checkforupgrade.wsdl" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://update.umbraco.org/checkforupgrade.asmx?disco" filename="checkforupgrade.disco" />
</Results>
</DiscoveryClientResultsFile>
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="UpgradeResult" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>umbraco.presentation.org.umbraco.update.UpgradeResult, Web References.org.umbraco.update.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
<contractRef ref="http://update.umbraco.org/checkforupgrade.asmx?wsdl" docRef="http://update.umbraco.org/checkforupgrade.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
<soap address="http://update.umbraco.org/checkforupgrade.asmx" xmlns:q1="http://update.umbraco.org/" binding="q1:CheckForUpgradeSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
<soap address="http://update.umbraco.org/checkforupgrade.asmx" xmlns:q2="http://update.umbraco.org/" binding="q2:CheckForUpgradeSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
</discovery>
@@ -1,142 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://update.umbraco.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://update.umbraco.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://update.umbraco.org/">
<s:import namespace="http://microsoft.com/wsdl/types/" />
<s:element name="Install">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="installId" type="s1:guid" />
<s:element minOccurs="1" maxOccurs="1" name="isUpgrade" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="installCompleted" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="timestamp" type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1" name="versionMajor" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="versionMinor" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="versionPatch" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="versionComment" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="error" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="userAgent" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="dbProvider" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="InstallResponse">
<s:complexType />
</s:element>
<s:element name="CheckUpgrade">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="versionMajor" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="versionMinor" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="versionPatch" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="versionComment" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CheckUpgradeResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CheckUpgradeResult" type="tns:UpgradeResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="UpgradeResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Comment" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="UpgradeType" type="tns:UpgradeType" />
<s:element minOccurs="0" maxOccurs="1" name="UpgradeUrl" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="UpgradeType">
<s:restriction base="s:string">
<s:enumeration value="None" />
<s:enumeration value="Patch" />
<s:enumeration value="Minor" />
<s:enumeration value="Major" />
<s:enumeration value="Critical" />
<s:enumeration value="Error" />
<s:enumeration value="OutOfSync" />
</s:restriction>
</s:simpleType>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
<s:simpleType name="guid">
<s:restriction base="s:string">
<s:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
</s:restriction>
</s:simpleType>
</s:schema>
</wsdl:types>
<wsdl:message name="InstallSoapIn">
<wsdl:part name="parameters" element="tns:Install" />
</wsdl:message>
<wsdl:message name="InstallSoapOut">
<wsdl:part name="parameters" element="tns:InstallResponse" />
</wsdl:message>
<wsdl:message name="CheckUpgradeSoapIn">
<wsdl:part name="parameters" element="tns:CheckUpgrade" />
</wsdl:message>
<wsdl:message name="CheckUpgradeSoapOut">
<wsdl:part name="parameters" element="tns:CheckUpgradeResponse" />
</wsdl:message>
<wsdl:portType name="CheckForUpgradeSoap">
<wsdl:operation name="Install">
<wsdl:input message="tns:InstallSoapIn" />
<wsdl:output message="tns:InstallSoapOut" />
</wsdl:operation>
<wsdl:operation name="CheckUpgrade">
<wsdl:input message="tns:CheckUpgradeSoapIn" />
<wsdl:output message="tns:CheckUpgradeSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CheckForUpgradeSoap" type="tns:CheckForUpgradeSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Install">
<soap:operation soapAction="http://update.umbraco.org/Install" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CheckUpgrade">
<soap:operation soapAction="http://update.umbraco.org/CheckUpgrade" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CheckForUpgradeSoap12" type="tns:CheckForUpgradeSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Install">
<soap12:operation soapAction="http://update.umbraco.org/Install" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CheckUpgrade">
<soap12:operation soapAction="http://update.umbraco.org/CheckUpgrade" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CheckForUpgrade">
<wsdl:port name="CheckForUpgradeSoap" binding="tns:CheckForUpgradeSoap">
<soap:address location="http://update.umbraco.org/checkforupgrade.asmx" />
</wsdl:port>
<wsdl:port name="CheckForUpgradeSoap12" binding="tns:CheckForUpgradeSoap12">
<soap12:address location="http://update.umbraco.org/checkforupgrade.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>