Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7393d9c372 | |||
| 79c4d7797c | |||
| 01a895bbf7 | |||
| 4fa523db43 | |||
| 186460ac08 | |||
| 686f6752f3 | |||
| 23ccdeb2cf | |||
| 6148ce4e52 | |||
| 06850ed25c | |||
| 0320a56cb5 | |||
| cd27bb210f | |||
| 67f680a675 | |||
| 47c3e3a79f | |||
| f3bfc1ffb2 | |||
| 89cd655df2 | |||
| 14c4c4815d | |||
| bfb69a34ef | |||
| d52420183e | |||
| 2aaca865e7 | |||
| 2ec8281163 | |||
| 2ac5e61e44 | |||
| c47a08b553 | |||
| de9241bcf5 | |||
| 7c03fe3c1f | |||
| 82eb241119 | |||
| 1073e6257c | |||
| 59bf24c461 | |||
| 2748c3635d | |||
| d31e71a838 | |||
| 2252db0d55 | |||
| df896af476 | |||
| 4b605b2580 | |||
| 80d7f1b2c9 | |||
| 5ada85df29 |
@@ -346,7 +346,7 @@
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.8.8.0" newVersion="1.8.8.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
|
||||
@@ -358,11 +358,11 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
|
||||
@@ -370,27 +370,27 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly xdt:Transform="Insert">
|
||||
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
|
||||
|
||||
+2
-2
@@ -11,5 +11,5 @@ using System.Resources;
|
||||
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyFileVersion("7.15.0")]
|
||||
[assembly: AssemblyInformationalVersion("7.15.0")]
|
||||
[assembly: AssemblyFileVersion("7.15.1")]
|
||||
[assembly: AssemblyInformationalVersion("7.15.1")]
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Configuration
|
||||
{
|
||||
public class UmbracoVersion
|
||||
{
|
||||
private static readonly Version Version = new Version("7.15.0");
|
||||
private static readonly Version Version = new Version("7.15.1");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current version of Umbraco.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -370,7 +370,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
if (isMedia)
|
||||
{
|
||||
entitySql.InnerJoin("cmsMedia media").On("media.nodeId = umbracoNode.id");
|
||||
entitySql.LeftJoin("cmsMedia media").On("media.nodeId = umbracoNode.id");
|
||||
}
|
||||
|
||||
entitySql.LeftJoin("cmsContentType contenttype").On("contenttype.nodeId = content.contentType");
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using Umbraco.Core.CodeAnnotations;
|
||||
@@ -717,5 +718,32 @@ namespace Umbraco.Core.Services
|
||||
}
|
||||
return node.NodeId;
|
||||
}
|
||||
|
||||
#region Obsolete - only here for compat
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity GetByKey(Guid key, bool loadBaseType = true) => GetByKey(key);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity Get(int id, bool loadBaseType = true) => Get(id);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true) => GetByKey(key, umbracoObjectType);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity GetByKey<T>(Guid key, bool loadBaseType = true) where T : IUmbracoEntity => GetByKey<T>(key);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true) => Get(id, umbracoObjectType);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity Get<T>(int id, bool loadBaseType = true) where T : IUmbracoEntity => Get<T>(id);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
@@ -55,6 +56,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity GetByKey(Guid key);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity GetByKey(Guid key, bool loadBaseType = true);
|
||||
|
||||
/// <summary>
|
||||
/// Gets an UmbracoEntity by its Id, and optionally loads the complete object graph.
|
||||
/// </summary>
|
||||
@@ -62,9 +67,13 @@ namespace Umbraco.Core.Services
|
||||
/// By default this will load the base type <see cref="IUmbracoEntity"/> with a minimum set of properties.
|
||||
/// </returns>
|
||||
/// <param name="id">Id of the object to retrieve</param>
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity Get(int id);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity Get(int id, bool loadBaseType = true);
|
||||
|
||||
/// <summary>
|
||||
/// Gets an UmbracoEntity by its Id and UmbracoObjectType, and optionally loads the complete object graph.
|
||||
/// </summary>
|
||||
@@ -76,6 +85,14 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity GetByKey(Guid key, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity GetByKey<T>(Guid key, bool loadBaseType = true) where T : IUmbracoEntity;
|
||||
|
||||
/// <summary>
|
||||
/// Gets an UmbracoEntity by its Id and UmbracoObjectType, and optionally loads the complete object graph.
|
||||
/// </summary>
|
||||
@@ -87,6 +104,9 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity Get(int id, UmbracoObjectTypes umbracoObjectType, bool loadBaseType = true);
|
||||
|
||||
/// <summary>
|
||||
/// Gets an UmbracoEntity by its Id and specified Type. Optionally loads the complete object graph.
|
||||
@@ -99,6 +119,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity Get<T>(int id) where T : IUmbracoEntity;
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity Get<T>(int id, bool loadBaseType = true) where T : IUmbracoEntity;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parent of entity by its id
|
||||
/// </summary>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
|
||||
@@ -145,6 +146,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity GetChildEntityFromRelation(IRelation relation);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity GetChildEntityFromRelation(IRelation relation, bool loadBaseType = false);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Parent object from a Relation as an <see cref="IUmbracoEntity"/>
|
||||
/// </summary>
|
||||
@@ -152,6 +157,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An <see cref="IUmbracoEntity"/></returns>
|
||||
IUmbracoEntity GetParentEntityFromRelation(IRelation relation);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IUmbracoEntity GetParentEntityFromRelation(IRelation relation, bool loadBaseType = false);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Parent and Child objects from a Relation as a <see cref="Tuple"/>"/> with <see cref="IUmbracoEntity"/>.
|
||||
/// </summary>
|
||||
@@ -159,6 +168,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>Returns a Tuple with Parent (item1) and Child (item2)</returns>
|
||||
Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation, bool loadBaseType = false);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||
/// </summary>
|
||||
@@ -166,6 +179,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
||||
IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Parent objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||
/// </summary>
|
||||
@@ -173,6 +190,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An enumerable list of <see cref="IUmbracoEntity"/></returns>
|
||||
IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Parent and Child objects from a list of Relations as a list of <see cref="IUmbracoEntity"/> objects.
|
||||
/// </summary>
|
||||
@@ -181,6 +202,12 @@ namespace Umbraco.Core.Services
|
||||
IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
||||
IEnumerable<IRelation> relations);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(
|
||||
IEnumerable<IRelation> relations,
|
||||
bool loadBaseType = false);
|
||||
|
||||
/// <summary>
|
||||
/// Relates two objects by their entity Ids.
|
||||
/// </summary>
|
||||
|
||||
@@ -124,40 +124,52 @@ namespace Umbraco.Core.Services
|
||||
var notifications = GetUsersNotifications(users.Select(x => x.Id), action, Enumerable.Empty<int>(), Constants.ObjectTypes.DocumentGuid).ToList();
|
||||
if (notifications.Count == 0) break;
|
||||
|
||||
var i = 0;
|
||||
foreach (var user in users)
|
||||
{
|
||||
// continue if there's no notification for this user
|
||||
if (notifications[i].UserId != user.Id) continue; // next user
|
||||
|
||||
for (var j = 0; j < entitiesL.Count; j++)
|
||||
{
|
||||
var content = entitiesL[j];
|
||||
var path = paths[j];
|
||||
|
||||
// test if the notification applies to the path ie to this entity
|
||||
if (path.Contains(notifications[i].EntityId) == false) continue; // next entity
|
||||
|
||||
if (prevVersionDictionary.ContainsKey(content.Id) == false)
|
||||
{
|
||||
prevVersionDictionary[content.Id] = GetPreviousVersion(content.Id);
|
||||
}
|
||||
|
||||
// queue notification
|
||||
var req = CreateNotificationRequest(operatingUser, user, content, prevVersionDictionary[content.Id], actionName, http, createSubject, createBody);
|
||||
Enqueue(req);
|
||||
}
|
||||
|
||||
// skip other notifications for this user, essentially this means moving i to the next index of notifications
|
||||
// for the next user.
|
||||
do
|
||||
{
|
||||
i++;
|
||||
} while (i < notifications.Count && notifications[i].UserId == user.Id);
|
||||
|
||||
if (i >= notifications.Count) break; // break if no more notifications
|
||||
}
|
||||
while (notifications.Count > 0)
|
||||
{
|
||||
var notification = notifications[0];
|
||||
var isMatched = false;
|
||||
|
||||
// grab user whose associated to the notification
|
||||
var user = users.Where(x => x.Id == notification.UserId).FirstOrDefault();
|
||||
|
||||
if (user == null)
|
||||
{
|
||||
notifications.RemoveAll(x => x.UserId == notification.UserId);
|
||||
}
|
||||
|
||||
for (var j = 0; j < entitiesL.Count; j++)
|
||||
{
|
||||
var content = entitiesL[j];
|
||||
var path = paths[j];
|
||||
|
||||
// test if the notification applies to the path ie to this entity
|
||||
if (path.Contains(notification.EntityId) == false) continue; // next entity
|
||||
|
||||
isMatched = true;
|
||||
|
||||
if (prevVersionDictionary.ContainsKey(content.Id) == false)
|
||||
{
|
||||
prevVersionDictionary[content.Id] = GetPreviousVersion(content.Id);
|
||||
}
|
||||
|
||||
// queue notification
|
||||
var req = CreateNotificationRequest(operatingUser, user, content, prevVersionDictionary[content.Id], actionName, http, createSubject, createBody);
|
||||
Enqueue(req);
|
||||
|
||||
// don't process any further entities as a notification has been sent
|
||||
break;
|
||||
}
|
||||
|
||||
// when a match has been found, skip other notifications for user.
|
||||
if (isMatched)
|
||||
{
|
||||
notifications.RemoveAll(x => x.UserId == notification.UserId);
|
||||
continue;
|
||||
}
|
||||
|
||||
notifications.Remove(notification);
|
||||
}
|
||||
|
||||
// load more users if any
|
||||
id = users.Count == pagesz ? users.Last().Id + 1 : -1;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Events;
|
||||
using Umbraco.Core.Logging;
|
||||
@@ -736,5 +737,31 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IRelationService, SaveEventArgs<IRelationType>> SavedRelationType;
|
||||
#endregion
|
||||
|
||||
#region Obsolete - only here for compat
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity GetChildEntityFromRelation(IRelation relation, bool loadBaseType = false) => GetChildEntityFromRelation(relation);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IUmbracoEntity GetParentEntityFromRelation(IRelation relation, bool loadBaseType = false) => GetParentEntityFromRelation(relation);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public Tuple<IUmbracoEntity, IUmbracoEntity> GetEntitiesFromRelation(IRelation relation, bool loadBaseType = false) => GetEntitiesFromRelation(relation);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IEnumerable<IUmbracoEntity> GetChildEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false) => GetChildEntitiesFromRelations(relations);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IEnumerable<IUmbracoEntity> GetParentEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false) => GetParentEntitiesFromRelations(relations);
|
||||
|
||||
[Obsolete("Use the overload that doesn't specify loadBaseType instead, loadBaseType will not affect any results")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public IEnumerable<Tuple<IUmbracoEntity, IUmbracoEntity>> GetEntitiesFromRelations(IEnumerable<IRelation> relations, bool loadBaseType = false) => GetEntitiesFromRelations(relations);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,157 +0,0 @@
|
||||
using System.Collections.Specialized;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using Moq;
|
||||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Mvc;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Tests.Security
|
||||
{
|
||||
[TestFixture]
|
||||
public class UmbracoAntiForgeryAdditionalDataProviderTests
|
||||
{
|
||||
[Test]
|
||||
public void Test_Wrapped_Non_BeginUmbracoForm()
|
||||
{
|
||||
var wrapped = Mock.Of<IAntiForgeryAdditionalDataProvider>(x => x.GetAdditionalData(It.IsAny<HttpContextBase>()) == "custom");
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(wrapped);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var data = provider.GetAdditionalData(httpContextFactory.HttpContext);
|
||||
|
||||
Assert.IsTrue(data.DetectIsJson());
|
||||
var json = JsonConvert.DeserializeObject<UmbracoAntiForgeryAdditionalDataProvider.AdditionalData>(data);
|
||||
Assert.AreEqual(null, json.Ufprt);
|
||||
Assert.IsTrue(json.Stamp != default);
|
||||
Assert.AreEqual("custom", json.WrappedValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Null_Wrapped_Non_BeginUmbracoForm()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var data = provider.GetAdditionalData(httpContextFactory.HttpContext);
|
||||
|
||||
Assert.IsTrue(data.DetectIsJson());
|
||||
var json = JsonConvert.DeserializeObject<UmbracoAntiForgeryAdditionalDataProvider.AdditionalData>(data);
|
||||
Assert.AreEqual(null, json.Ufprt);
|
||||
Assert.IsTrue(json.Stamp != default);
|
||||
Assert.AreEqual("default", json.WrappedValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_Non_Json()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "hello");
|
||||
|
||||
Assert.IsFalse(isValid);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_Invalid_Json()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '0'}");
|
||||
Assert.IsFalse(isValid);
|
||||
|
||||
isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': ''}");
|
||||
Assert.IsFalse(isValid);
|
||||
|
||||
isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'hello': 'world'}");
|
||||
Assert.IsFalse(isValid);
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_No_Request_Ufprt()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
//there is a ufprt in the additional data, but not in the request
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': 'ASBVDFDFDFDF'}");
|
||||
Assert.IsFalse(isValid);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_No_AdditionalData_Ufprt()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var requestMock = Mock.Get(httpContextFactory.HttpContext.Request);
|
||||
requestMock.SetupGet(x => x["ufprt"]).Returns("ABCDEFG");
|
||||
|
||||
//there is a ufprt in the additional data, but not in the request
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': ''}");
|
||||
Assert.IsFalse(isValid);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_No_AdditionalData_Or_Request_Ufprt()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
|
||||
//there is a ufprt in the additional data, but not in the request
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': ''}");
|
||||
Assert.IsTrue(isValid);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_Request_And_AdditionalData_Ufprt()
|
||||
{
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(null);
|
||||
|
||||
var routeParams1 = $"{RenderRouteHandler.ReservedAdditionalKeys.Controller}={HttpUtility.UrlEncode("Test")}&{RenderRouteHandler.ReservedAdditionalKeys.Action}={HttpUtility.UrlEncode("Index")}&{RenderRouteHandler.ReservedAdditionalKeys.Area}=Umbraco";
|
||||
var routeParams2 = $"{RenderRouteHandler.ReservedAdditionalKeys.Controller}={HttpUtility.UrlEncode("Test")}&{RenderRouteHandler.ReservedAdditionalKeys.Action}={HttpUtility.UrlEncode("Index")}&{RenderRouteHandler.ReservedAdditionalKeys.Area}=Umbraco";
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var requestMock = Mock.Get(httpContextFactory.HttpContext.Request);
|
||||
requestMock.SetupGet(x => x["ufprt"]).Returns(routeParams1.EncryptWithMachineKey());
|
||||
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': '" + routeParams2.EncryptWithMachineKey() + "'}");
|
||||
Assert.IsTrue(isValid);
|
||||
|
||||
routeParams2 = $"{RenderRouteHandler.ReservedAdditionalKeys.Controller}={HttpUtility.UrlEncode("Invalid")}&{RenderRouteHandler.ReservedAdditionalKeys.Action}={HttpUtility.UrlEncode("Index")}&{RenderRouteHandler.ReservedAdditionalKeys.Area}=Umbraco";
|
||||
isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': '" + routeParams2.EncryptWithMachineKey() + "'}");
|
||||
Assert.IsFalse(isValid);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Validate_Wrapped_Request_And_AdditionalData_Ufprt()
|
||||
{
|
||||
var wrapped = Mock.Of<IAntiForgeryAdditionalDataProvider>(x => x.ValidateAdditionalData(It.IsAny<HttpContextBase>(), "custom") == true);
|
||||
var provider = new UmbracoAntiForgeryAdditionalDataProvider(wrapped);
|
||||
|
||||
var routeParams1 = $"{RenderRouteHandler.ReservedAdditionalKeys.Controller}={HttpUtility.UrlEncode("Test")}&{RenderRouteHandler.ReservedAdditionalKeys.Action}={HttpUtility.UrlEncode("Index")}&{RenderRouteHandler.ReservedAdditionalKeys.Area}=Umbraco";
|
||||
var routeParams2 = $"{RenderRouteHandler.ReservedAdditionalKeys.Controller}={HttpUtility.UrlEncode("Test")}&{RenderRouteHandler.ReservedAdditionalKeys.Action}={HttpUtility.UrlEncode("Index")}&{RenderRouteHandler.ReservedAdditionalKeys.Area}=Umbraco";
|
||||
|
||||
var httpContextFactory = new FakeHttpContextFactory("/hello/world");
|
||||
var requestMock = Mock.Get(httpContextFactory.HttpContext.Request);
|
||||
requestMock.SetupGet(x => x["ufprt"]).Returns(routeParams1.EncryptWithMachineKey());
|
||||
|
||||
var isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': '" + routeParams2.EncryptWithMachineKey() + "'}");
|
||||
Assert.IsFalse(isValid);
|
||||
|
||||
isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'custom', 'Ufprt': '" + routeParams2.EncryptWithMachineKey() + "'}");
|
||||
Assert.IsTrue(isValid);
|
||||
|
||||
routeParams2 = $"{RenderRouteHandler.ReservedAdditionalKeys.Controller}={HttpUtility.UrlEncode("Invalid")}&{RenderRouteHandler.ReservedAdditionalKeys.Action}={HttpUtility.UrlEncode("Index")}&{RenderRouteHandler.ReservedAdditionalKeys.Area}=Umbraco";
|
||||
isValid = provider.ValidateAdditionalData(httpContextFactory.HttpContext, "{'Stamp': '636970328040070330', 'WrappedValue': 'default', 'Ufprt': '" + routeParams2.EncryptWithMachineKey() + "'}");
|
||||
Assert.IsFalse(isValid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -197,7 +197,6 @@
|
||||
<Compile Include="Packaging\PackageExtractionTests.cs" />
|
||||
<Compile Include="Persistence\Repositories\SimilarNodeNameTests.cs" />
|
||||
<Compile Include="PublishedContent\StronglyTypedModels\Home.cs" />
|
||||
<Compile Include="Security\UmbracoAntiForgeryAdditionalDataProviderTests.cs" />
|
||||
<Compile Include="Services\AuditServiceTests.cs" />
|
||||
<Compile Include="Services\ConsentServiceTests.cs" />
|
||||
<Compile Include="Services\MemberGroupServiceTests.cs" />
|
||||
@@ -399,6 +398,7 @@
|
||||
<Compile Include="Models\ContentExtensionsTests.cs" />
|
||||
<Compile Include="Models\UserExtensionsTests.cs" />
|
||||
<Compile Include="Web\Mvc\MergeParentContextViewDataAttributeTests.cs" />
|
||||
<Compile Include="Web\Mvc\ValidateUmbracoFormRouteStringAttributeTests.cs" />
|
||||
<Compile Include="Web\Mvc\ViewDataDictionaryExtensionTests.cs" />
|
||||
<Compile Include="Persistence\PetaPocoExtensionsTest.cs" />
|
||||
<Compile Include="Persistence\Querying\ContentTypeSqlMappingTests.cs" />
|
||||
|
||||
@@ -4,7 +4,8 @@ using Umbraco.Web;
|
||||
|
||||
namespace Umbraco.Tests.Web.Mvc
|
||||
{
|
||||
[TestFixture]
|
||||
|
||||
[TestFixture]
|
||||
public class HtmlHelperExtensionMethodsTests
|
||||
{
|
||||
[SetUp]
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Web;
|
||||
using Umbraco.Web.Mvc;
|
||||
|
||||
namespace Umbraco.Tests.Web.Mvc
|
||||
{
|
||||
[TestFixture]
|
||||
public class ValidateUmbracoFormRouteStringAttributeTests
|
||||
{
|
||||
[Test]
|
||||
public void Validate_Route_String()
|
||||
{
|
||||
var attribute = new ValidateUmbracoFormRouteStringAttribute();
|
||||
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(null, null, null, null));
|
||||
|
||||
const string ControllerName = "Test";
|
||||
const string ControllerAction = "Index";
|
||||
const string Area = "MyArea";
|
||||
var validUfprt = UmbracoHelper.CreateEncryptedRouteString(ControllerName, ControllerAction, Area);
|
||||
|
||||
var invalidUfprt = validUfprt + "z";
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(invalidUfprt, null, null, null));
|
||||
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, "doesntMatch"));
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, null));
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, "doesntMatch", Area));
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, ControllerName, null, Area));
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, "doesntMatch", ControllerAction, Area));
|
||||
Assert.Throws<HttpUmbracoFormRouteStringException>(() => attribute.ValidateRouteString(validUfprt, null, ControllerAction, Area));
|
||||
|
||||
Assert.DoesNotThrow(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, Area));
|
||||
Assert.DoesNotThrow(() => attribute.ValidateRouteString(validUfprt, ControllerName.ToLowerInvariant(), ControllerAction.ToLowerInvariant(), Area.ToLowerInvariant()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -172,7 +172,7 @@ function entityResource($q, $http, umbRequestHelper) {
|
||||
umbRequestHelper.getApiUrl(
|
||||
"entityApiBaseUrl",
|
||||
"GetUrlAndAnchors",
|
||||
{ id: id })),
|
||||
[{ id: id }])),
|
||||
'Failed to retrieve url and anchors data for id ' + id);
|
||||
},
|
||||
|
||||
@@ -409,7 +409,8 @@ function entityResource($q, $http, umbRequestHelper) {
|
||||
pageNumber: 100,
|
||||
filter: '',
|
||||
orderDirection: "Ascending",
|
||||
orderBy: "SortOrder"
|
||||
orderBy: "SortOrder",
|
||||
dataTypeId: null
|
||||
};
|
||||
if (options === undefined) {
|
||||
options = {};
|
||||
@@ -426,6 +427,7 @@ function entityResource($q, $http, umbRequestHelper) {
|
||||
options.orderDirection = "Descending";
|
||||
}
|
||||
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get(
|
||||
umbRequestHelper.getApiUrl(
|
||||
|
||||
@@ -327,27 +327,6 @@ li.root > div > a.umb-options {
|
||||
div.not-published > i.icon,div.not-published > a{
|
||||
opacity: 0.6;
|
||||
}
|
||||
div.protected:before{
|
||||
content:"\e256";
|
||||
font-family: 'icomoon';
|
||||
color: @red;
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
padding-left: 7px;
|
||||
padding-top: 7px;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
div.has-unpublished-version:before{
|
||||
content:"\e25a";
|
||||
font-family: 'icomoon';
|
||||
color: @green;
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
padding-left: 7px;
|
||||
padding-top: 7px;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
div.not-allowed > i.icon,div.not-allowed > a{
|
||||
cursor: not-allowed;
|
||||
@@ -380,6 +359,29 @@ div.locked:before{
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
div.has-unpublished-version:before {
|
||||
content: "\e25a";
|
||||
font-family: 'icomoon';
|
||||
color: @green;
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
padding-left: 7px;
|
||||
padding-top: 7px;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
div.protected:before {
|
||||
content: "\e256";
|
||||
font-family: 'icomoon';
|
||||
color: @red;
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
padding-left: 7px;
|
||||
padding-top: 7px;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.umb-tree li div.no-access .umb-tree-icon,
|
||||
.umb-tree li div.no-access .root-link,
|
||||
.umb-tree li div.no-access .umb-tree-item__label {
|
||||
|
||||
@@ -14,7 +14,7 @@ angular.module("umbraco").controller("Umbraco.Dialogs.LinkPickerController",
|
||||
searchFromId: null,
|
||||
searchFromName: null,
|
||||
showSearch: false,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null,
|
||||
results: [],
|
||||
selectedSearchResults: []
|
||||
}
|
||||
|
||||
+12
-7
@@ -12,40 +12,44 @@ angular.module("umbraco").controller("Umbraco.Overlays.LinkPickerController",
|
||||
$scope.model.title = localizationService.localize("defaultdialogs_selectLink");
|
||||
}
|
||||
|
||||
var dataTypeId = null;
|
||||
if(dialogOptions && dialogOptions.dataTypeId){
|
||||
dataTypeId = dialogOptions.dataTypeId;
|
||||
}
|
||||
|
||||
$scope.dialogTreeEventHandler = $({});
|
||||
$scope.model.target = {};
|
||||
$scope.searchInfo = {
|
||||
searchFromId: null,
|
||||
searchFromName: null,
|
||||
showSearch: false,
|
||||
dataTypeId: dialogOptions.dataTypeId,
|
||||
dataTypeId: dataTypeId,
|
||||
results: [],
|
||||
selectedSearchResults: []
|
||||
};
|
||||
$scope.customTreeParams = dialogOptions.dataTypeId ? "dataTypeId=" + dialogOptions.dataTypeId : "";
|
||||
$scope.customTreeParams = dataTypeId !== null ? "dataTypeId=" + dataTypeId : "";
|
||||
$scope.showTarget = $scope.model.hideTarget !== true;
|
||||
|
||||
if (dialogOptions.currentTarget) {
|
||||
// clone the current target so we don't accidentally update the caller's model while manipulating $scope.model.target
|
||||
$scope.model.target = angular.copy(dialogOptions.currentTarget);
|
||||
//if we have a node ID, we fetch the current node to build the form data
|
||||
// if we have a node ID, we fetch the current node to build the form data
|
||||
if ($scope.model.target.id || $scope.model.target.udi) {
|
||||
|
||||
//will be either a udi or an int
|
||||
// will be either a udi or an int
|
||||
var id = $scope.model.target.udi ? $scope.model.target.udi : $scope.model.target.id;
|
||||
|
||||
// is it a content link?
|
||||
if (!$scope.model.target.isMedia) {
|
||||
// get the content path
|
||||
entityResource.getPath(id, "Document").then(function (path) {
|
||||
//now sync the tree to this path
|
||||
// now sync the tree to this path
|
||||
$scope.dialogTreeEventHandler.syncTree({
|
||||
path: path,
|
||||
tree: "content"
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
entityResource.getUrlAndAnchors(id).then(function(resp){
|
||||
$scope.anchorValues = resp.anchorValues;
|
||||
$scope.model.target.url = resp.url;
|
||||
@@ -115,12 +119,13 @@ angular.module("umbraco").controller("Umbraco.Overlays.LinkPickerController",
|
||||
startNodeId = -1;
|
||||
startNodeIsVirtual = true;
|
||||
}
|
||||
|
||||
$scope.mediaPickerOverlay = {
|
||||
view: "mediapicker",
|
||||
startNodeId: startNodeId,
|
||||
startNodeIsVirtual: startNodeIsVirtual,
|
||||
show: true,
|
||||
dataTypeId: dialogOptions.dataTypeId,
|
||||
dataTypeId: dataTypeId,
|
||||
submit: function (model) {
|
||||
var media = model.selectedImages[0];
|
||||
|
||||
|
||||
+10
-4
@@ -44,13 +44,17 @@ angular.module("umbraco")
|
||||
$scope.acceptedMediatypes = types;
|
||||
});
|
||||
|
||||
var dataTypeId = null;
|
||||
if($scope.model && $scope.model.dataTypeId) {
|
||||
dataTypeId = $scope.model.dataTypeId;
|
||||
}
|
||||
$scope.searchOptions = {
|
||||
pageNumber: 1,
|
||||
pageSize: 100,
|
||||
totalItems: 0,
|
||||
totalPages: 0,
|
||||
filter: '',
|
||||
dataTypeId: $scope.model.dataTypeId
|
||||
dataTypeId: dataTypeId
|
||||
};
|
||||
|
||||
//preload selected item
|
||||
@@ -157,7 +161,8 @@ angular.module("umbraco")
|
||||
}
|
||||
|
||||
if (folder.id > 0) {
|
||||
entityResource.getAncestors(folder.id, "media", { dataTypeId: $scope.model.dataTypeId })
|
||||
|
||||
entityResource.getAncestors(folder.id, "media", { dataTypeId: dataTypeId })
|
||||
.then(function (anc) {
|
||||
$scope.path = _.filter(anc,
|
||||
function (f) {
|
||||
@@ -262,7 +267,7 @@ angular.module("umbraco")
|
||||
|
||||
// also make sure the node is not trashed
|
||||
if (nodePath.indexOf($scope.startNodeId.toString()) !== -1 && node.trashed === false) {
|
||||
$scope.gotoFolder({ id: $scope.lastOpenedNode, name: "Media", icon: "icon-folder" });
|
||||
$scope.gotoFolder({ id: $scope.lastOpenedNode, name: "Media", icon: "icon-folder", path: node.path });
|
||||
return true;
|
||||
} else {
|
||||
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
||||
@@ -309,6 +314,7 @@ angular.module("umbraco")
|
||||
if ($scope.searchOptions.filter) {
|
||||
searchMedia();
|
||||
} else {
|
||||
|
||||
// reset pagination
|
||||
$scope.searchOptions = {
|
||||
pageNumber: 1,
|
||||
@@ -316,7 +322,7 @@ angular.module("umbraco")
|
||||
totalItems: 0,
|
||||
totalPages: 0,
|
||||
filter: '',
|
||||
dataTypeId: $scope.model.dataTypeId
|
||||
dataTypeId: dataTypeId
|
||||
};
|
||||
getChildren($scope.currentFolder.id);
|
||||
}
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
|
||||
|
||||
var tree = null;
|
||||
var dialogOptions = $scope.model;
|
||||
|
||||
$scope.treeReady = false;
|
||||
$scope.dialogTreeEventHandler = $({});
|
||||
$scope.section = dialogOptions.section;
|
||||
@@ -16,7 +17,7 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
|
||||
searchFromId: dialogOptions.startNodeId,
|
||||
searchFromName: null,
|
||||
showSearch: false,
|
||||
dataTypeId: dialogOptions.dataTypeId,
|
||||
dataTypeId: (dialogOptions && dialogOptions.dataTypeId) ? dialogOptions.dataTypeId : null,
|
||||
results: [],
|
||||
selectedSearchResults: []
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ function MemberEditController($scope, $routeParams, $location, $q, $window, appS
|
||||
|
||||
//anytime a user is changing a member's password without the oldPassword, we are in effect resetting it so we need to set that flag here
|
||||
var passwordProp = _.find(contentEditingHelper.getAllProps($scope.content), function (e) { return e.alias === '_umb_password' });
|
||||
if (!passwordProp.value.reset) {
|
||||
if (passwordProp && passwordProp.value && !passwordProp.value.reset) {
|
||||
//so if the admin is not explicitly resetting the password, flag it for resetting if a new password is being entered
|
||||
passwordProp.value.reset = !passwordProp.value.oldPassword && passwordProp.config.allowManuallyChangingPassword;
|
||||
}
|
||||
|
||||
+38
-37
@@ -68,11 +68,11 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
showPathOnHover: false,
|
||||
dataTypeId: null,
|
||||
maxNumber: 1,
|
||||
minNumber : 0,
|
||||
minNumber: 0,
|
||||
startNode: {
|
||||
query: "",
|
||||
type: "content",
|
||||
id: $scope.model.config.startNodeId ? $scope.model.config.startNodeId : -1 // get start node for simple Content Picker
|
||||
id: $scope.model.config.startNodeId ? $scope.model.config.startNodeId : -1 // get start node for simple Content Picker
|
||||
}
|
||||
};
|
||||
|
||||
@@ -104,8 +104,8 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
var entityType = $scope.model.config.startNode.type === "member"
|
||||
? "Member"
|
||||
: $scope.model.config.startNode.type === "media"
|
||||
? "Media"
|
||||
: "Document";
|
||||
? "Media"
|
||||
: "Document";
|
||||
$scope.allowOpenButton = entityType === "Document";
|
||||
$scope.allowEditButton = entityType === "Document";
|
||||
$scope.allowRemoveButton = true;
|
||||
@@ -144,7 +144,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
dialogOptions.filterCssClass = "not-allowed";
|
||||
var currFilter = dialogOptions.filter;
|
||||
//now change the filter to be a method
|
||||
dialogOptions.filter = function(i) {
|
||||
dialogOptions.filter = function (i) {
|
||||
//filter out the list view nodes
|
||||
if (i.metaData.isContainer) {
|
||||
return true;
|
||||
@@ -179,29 +179,30 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
}
|
||||
|
||||
//dialog
|
||||
$scope.openContentPicker = function() {
|
||||
$scope.contentPickerOverlay = dialogOptions;
|
||||
$scope.contentPickerOverlay.view = "treepicker";
|
||||
$scope.contentPickerOverlay.show = true;
|
||||
$scope.contentPickerOverlay.dataTypeId = $scope.model.dataTypeId;
|
||||
$scope.openContentPicker = function () {
|
||||
|
||||
$scope.contentPickerOverlay = dialogOptions;
|
||||
$scope.contentPickerOverlay.view = "treepicker";
|
||||
$scope.contentPickerOverlay.show = true;
|
||||
$scope.contentPickerOverlay.dataTypeId = ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null;
|
||||
|
||||
$scope.contentPickerOverlay.submit = function(model) {
|
||||
$scope.contentPickerOverlay.submit = function (model) {
|
||||
|
||||
if (angular.isArray(model.selection)) {
|
||||
_.each(model.selection, function (item, i) {
|
||||
$scope.add(item);
|
||||
});
|
||||
angularHelper.getCurrentForm($scope).$setDirty();
|
||||
}
|
||||
if (angular.isArray(model.selection)) {
|
||||
_.each(model.selection, function (item, i) {
|
||||
$scope.add(item);
|
||||
});
|
||||
angularHelper.getCurrentForm($scope).$setDirty();
|
||||
}
|
||||
|
||||
$scope.contentPickerOverlay.show = false;
|
||||
$scope.contentPickerOverlay = null;
|
||||
}
|
||||
$scope.contentPickerOverlay.show = false;
|
||||
$scope.contentPickerOverlay = null;
|
||||
}
|
||||
|
||||
$scope.contentPickerOverlay.close = function(oldModel) {
|
||||
$scope.contentPickerOverlay.show = false;
|
||||
$scope.contentPickerOverlay = null;
|
||||
}
|
||||
$scope.contentPickerOverlay.close = function (oldModel) {
|
||||
$scope.contentPickerOverlay.show = false;
|
||||
$scope.contentPickerOverlay = null;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -241,13 +242,13 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
$scope.renderModel = [];
|
||||
};
|
||||
|
||||
$scope.openMiniEditor = function(node) {
|
||||
miniEditorHelper.launchMiniEditor(node).then(function(updatedNode){
|
||||
$scope.openMiniEditor = function (node) {
|
||||
miniEditorHelper.launchMiniEditor(node).then(function (updatedNode) {
|
||||
// update the node
|
||||
node.name = updatedNode.name;
|
||||
node.published = updatedNode.hasPublishedVersion;
|
||||
if(entityType !== "Member") {
|
||||
entityResource.getUrl(updatedNode.id, entityType).then(function(data){
|
||||
if (entityType !== "Member") {
|
||||
entityResource.getUrl(updatedNode.id, entityType).then(function (data) {
|
||||
node.url = data;
|
||||
});
|
||||
}
|
||||
@@ -256,7 +257,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
|
||||
//when the scope is destroyed we need to unsubscribe
|
||||
$scope.$on('$destroy', function () {
|
||||
if(unsubscribe) {
|
||||
if (unsubscribe) {
|
||||
unsubscribe();
|
||||
}
|
||||
});
|
||||
@@ -265,12 +266,12 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
|
||||
//load current data if anything selected
|
||||
if (modelIds.length > 0) {
|
||||
entityResource.getByIds(modelIds, entityType).then(function(data) {
|
||||
entityResource.getByIds(modelIds, entityType).then(function (data) {
|
||||
|
||||
_.each(modelIds,
|
||||
function(id, i) {
|
||||
function (id, i) {
|
||||
var entity = _.find(data,
|
||||
function(d) {
|
||||
function (d) {
|
||||
return $scope.model.config.idType === "udi" ? (d.udi == id) : (d.id == id);
|
||||
});
|
||||
|
||||
@@ -294,10 +295,10 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
function setEntityUrl(entity) {
|
||||
|
||||
// get url for content and media items
|
||||
if(entityType !== "Member") {
|
||||
entityResource.getUrl(entity.id, entityType).then(function(data){
|
||||
if (entityType !== "Member") {
|
||||
entityResource.getUrl(entity.id, entityType).then(function (data) {
|
||||
// update url
|
||||
angular.forEach($scope.renderModel, function(item){
|
||||
angular.forEach($scope.renderModel, function (item) {
|
||||
if (item.id === entity.id) {
|
||||
if (entity.trashed) {
|
||||
item.url = localizationService.dictionary.general_recycleBin;
|
||||
@@ -319,7 +320,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
function addSelectedItem(item) {
|
||||
|
||||
// set icon
|
||||
if(item.icon) {
|
||||
if (item.icon) {
|
||||
item.icon = iconHelper.convertFromLegacyIcon(item.icon);
|
||||
}
|
||||
|
||||
@@ -354,7 +355,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
|
||||
function setSortingState(items) {
|
||||
// disable sorting if the list only consist of one item
|
||||
if(items.length > 1) {
|
||||
if (items.length > 1) {
|
||||
$scope.sortableOptions.disabled = false;
|
||||
} else {
|
||||
$scope.sortableOptions.disabled = true;
|
||||
|
||||
+5
-4
@@ -16,12 +16,13 @@ angular.module("umbraco")
|
||||
}
|
||||
|
||||
$scope.setImage = function(){
|
||||
|
||||
$scope.mediaPickerOverlay = {};
|
||||
$scope.mediaPickerOverlay.view = "mediapicker";
|
||||
$scope.mediaPickerOverlay.startNodeId = $scope.model.config && $scope.model.config.startNodeId ? $scope.model.config.startNodeId : undefined;
|
||||
$scope.mediaPickerOverlay.startNodeIsVirtual = $scope.mediaPickerOverlay.startNodeId ? $scope.model.config.startNodeIsVirtual : undefined;
|
||||
$scope.mediaPickerOverlay.dataTypeId = $scope.model.dataTypeId;
|
||||
$scope.mediaPickerOverlay.cropSize = $scope.control.editor.config && $scope.control.editor.config.size ? $scope.control.editor.config.size : undefined;
|
||||
$scope.mediaPickerOverlay.startNodeId = $scope.model.config && $scope.model.config.startNodeId ? $scope.model.config.startNodeId : null;
|
||||
$scope.mediaPickerOverlay.startNodeIsVirtual = $scope.mediaPickerOverlay.startNodeId ? $scope.model.config.startNodeIsVirtual : null;
|
||||
$scope.mediaPickerOverlay.dataTypeId = ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null;
|
||||
$scope.mediaPickerOverlay.cropSize = $scope.control.editor.config && $scope.control.editor.config.size ? $scope.control.editor.config.size : null;
|
||||
$scope.mediaPickerOverlay.showDetails = true;
|
||||
$scope.mediaPickerOverlay.disableFolderSelect = true;
|
||||
$scope.mediaPickerOverlay.onlyImages = true;
|
||||
|
||||
@@ -10,14 +10,17 @@
|
||||
vm.openMacroPicker = openMacroPicker;
|
||||
vm.openEmbed = openEmbed;
|
||||
|
||||
var dataTypeId = ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null;
|
||||
|
||||
function openLinkPicker(editor, currentTarget, anchorElement) {
|
||||
|
||||
entityResource.getAnchors(JSON.stringify($scope.model.value)).then(function(anchorValues) {
|
||||
|
||||
vm.linkPickerOverlay = {
|
||||
view: "linkpicker",
|
||||
currentTarget: currentTarget,
|
||||
anchors: anchorValues,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: dataTypeId,
|
||||
ignoreUserStartNodes : $scope.model.config.ignoreUserStartNodes,
|
||||
show: true,
|
||||
submit: function(model) {
|
||||
@@ -46,7 +49,7 @@
|
||||
showDetails: true,
|
||||
startNodeId: startNodeId,
|
||||
startNodeIsVirtual: startNodeIsVirtual,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: dataTypeId,
|
||||
view: "mediapicker",
|
||||
show: true,
|
||||
submit: function(model) {
|
||||
|
||||
+2
-2
@@ -107,13 +107,13 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl
|
||||
};
|
||||
|
||||
$scope.add = function() {
|
||||
|
||||
|
||||
$scope.mediaPickerOverlay = {
|
||||
view: "mediapicker",
|
||||
title: "Select media",
|
||||
startNodeId: $scope.model.config.startNodeId,
|
||||
startNodeIsVirtual: $scope.model.config.startNodeIsVirtual,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null,
|
||||
multiPicker: multiPicker,
|
||||
onlyImages: onlyImages,
|
||||
disableFolderSelect: disableFolderSelect,
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ function multiUrlPickerController($scope, angularHelper, localizationService, en
|
||||
$scope.linkPickerOverlay = {
|
||||
view: "linkpicker",
|
||||
currentTarget: target,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null,
|
||||
ignoreUserStartNodes : $scope.model.config.ignoreUserStartNodes,
|
||||
show: true,
|
||||
submit: function (model) {
|
||||
|
||||
+6
-2
@@ -18,14 +18,17 @@
|
||||
$scope.currentEditLink = null;
|
||||
$scope.hasError = false;
|
||||
|
||||
var dataTypeId = ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null;
|
||||
|
||||
$scope.internal = function($event) {
|
||||
|
||||
$scope.currentEditLink = null;
|
||||
|
||||
$scope.contentPickerOverlay = {};
|
||||
$scope.contentPickerOverlay.view = "contentpicker";
|
||||
$scope.contentPickerOverlay.multiPicker = false;
|
||||
$scope.contentPickerOverlay.show = true;
|
||||
$scope.contentPickerOverlay.dataTypeId = $scope.model.dataTypeId;
|
||||
$scope.contentPickerOverlay.dataTypeId = dataTypeId;
|
||||
$scope.contentPickerOverlay.idType = $scope.model.config.idType ? $scope.model.config.idType : "int";
|
||||
|
||||
$scope.contentPickerOverlay.submit = function(model) {
|
||||
@@ -45,13 +48,14 @@
|
||||
};
|
||||
|
||||
$scope.selectInternal = function ($event, link) {
|
||||
|
||||
$scope.currentEditLink = link;
|
||||
|
||||
$scope.contentPickerOverlay = {};
|
||||
$scope.contentPickerOverlay.view = "contentpicker";
|
||||
$scope.contentPickerOverlay.multiPicker = false;
|
||||
$scope.contentPickerOverlay.show = true;
|
||||
$scope.contentPickerOverlay.dataTypeId = $scope.model.dataTypeId;
|
||||
$scope.contentPickerOverlay.dataTypeId = dataTypeId;
|
||||
$scope.contentPickerOverlay.idType = $scope.model.config.idType ? $scope.model.config.idType : "int";
|
||||
|
||||
$scope.contentPickerOverlay.submit = function(model) {
|
||||
|
||||
@@ -52,6 +52,8 @@ angular.module("umbraco")
|
||||
editorConfig.maxImageSize = tinyMceService.defaultPrevalues().maxImageSize;
|
||||
}
|
||||
|
||||
var dataTypeId = ($scope.model && $scope.model.dataTypeId) ? $scope.model.dataTypeId : null;
|
||||
|
||||
//queue file loading
|
||||
if (typeof tinymce === "undefined") { // Don't reload tinymce if already loaded
|
||||
await.push(assetsService.loadJs("lib/tinymce/tinymce.min.js", $scope));
|
||||
@@ -272,11 +274,12 @@ angular.module("umbraco")
|
||||
tinyMceService.createLinkPicker(editor, $scope, function(currentTarget, anchorElement) {
|
||||
|
||||
entityResource.getAnchors($scope.model.value).then(function(anchorValues){
|
||||
|
||||
$scope.linkPickerOverlay = {
|
||||
view: "linkpicker",
|
||||
currentTarget: currentTarget,
|
||||
anchors: anchorValues,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: dataTypeId,
|
||||
ignoreUserStartNodes: $scope.model.config.ignoreUserStartNodes,
|
||||
show: true,
|
||||
submit: function(model) {
|
||||
@@ -300,7 +303,7 @@ angular.module("umbraco")
|
||||
startNodeId = -1;
|
||||
startNodeIsVirtual = true;
|
||||
}
|
||||
|
||||
|
||||
$scope.mediaPickerOverlay = {
|
||||
currentTarget: currentTarget,
|
||||
onlyImages: true,
|
||||
@@ -308,7 +311,7 @@ angular.module("umbraco")
|
||||
disableFolderSelect: true,
|
||||
startNodeId: startNodeId,
|
||||
startNodeIsVirtual: startNodeIsVirtual,
|
||||
dataTypeId: $scope.model.dataTypeId,
|
||||
dataTypeId: dataTypeId,
|
||||
view: "mediapicker",
|
||||
show: true,
|
||||
submit: function(model) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
|
||||
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />
|
||||
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
|
||||
<Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
@@ -1027,9 +1028,9 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\"
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>7150</DevelopmentServerPort>
|
||||
<DevelopmentServerPort>7151</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>http://localhost:7150</IISUrl>
|
||||
<IISUrl>http://localhost:7151</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
@@ -1088,5 +1089,6 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\"
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -32,6 +32,7 @@
|
||||
<package id="Microsoft.Owin.Security.OAuth" version="4.0.1" targetFramework="net452" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
||||
<package id="MiniProfiler" version="2.1.0" targetFramework="net45" />
|
||||
<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net452" />
|
||||
<package id="MySql.Data" version="6.9.9" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net452" />
|
||||
<package id="Owin" version="1.0" targetFramework="net45" />
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace Umbraco.Web.Controllers
|
||||
{
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
[ValidateUmbracoFormRouteString]
|
||||
public ActionResult HandleLogin([Bind(Prefix = "loginModel")]LoginModel model)
|
||||
{
|
||||
if (ModelState.IsValid == false)
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Umbraco.Web.Controllers
|
||||
{
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
[ValidateUmbracoFormRouteString]
|
||||
public ActionResult HandleLogout([Bind(Prefix = "logoutModel")]PostRedirectModel model)
|
||||
{
|
||||
if (ModelState.IsValid == false)
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace Umbraco.Web.Controllers
|
||||
{
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
[ValidateUmbracoFormRouteString]
|
||||
public ActionResult HandleUpdateProfile([Bind(Prefix = "profileModel")] ProfileModel model)
|
||||
{
|
||||
var provider = global::Umbraco.Core.Security.MembershipProviderExtensions.GetMembersMembershipProvider();
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace Umbraco.Web.Controllers
|
||||
{
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
[ValidateUmbracoFormRouteString]
|
||||
public ActionResult HandleRegisterMember([Bind(Prefix = "registerModel")]RegisterModel model)
|
||||
{
|
||||
if (ModelState.IsValid == false)
|
||||
|
||||
@@ -56,6 +56,7 @@ namespace Umbraco.Web.Editors
|
||||
//id is passed in eventually we'll probably want to support GUID + Udi too
|
||||
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetPagedChildren", "id", typeof(int), typeof(string)),
|
||||
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetPath", "id", typeof(int), typeof(Guid), typeof(Udi)),
|
||||
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetUrlAndAnchors", "id", typeof(int), typeof(Guid), typeof(Udi)),
|
||||
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetById", "id", typeof(int), typeof(Guid), typeof(Udi)),
|
||||
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetByIds", "ids", typeof(int[]), typeof(Guid[]), typeof(Udi[]))));
|
||||
}
|
||||
@@ -281,9 +282,17 @@ namespace Umbraco.Web.Editors
|
||||
publishedContentExists: i => Umbraco.TypedContent(i) != null);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public UrlAndAnchors GetUrlAndAnchors(Udi id)
|
||||
{
|
||||
var nodeId = Umbraco.GetIdForUdi(id);
|
||||
var url = Umbraco.Url(nodeId);
|
||||
var anchorValues = Services.ContentService.GetAnchorValuesFromRTEs(nodeId);
|
||||
return new UrlAndAnchors(url, anchorValues);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public UrlAndAnchors GetUrlAndAnchors([FromUri]int id)
|
||||
public UrlAndAnchors GetUrlAndAnchors(int id)
|
||||
{
|
||||
var url = Umbraco.Url(id);
|
||||
var anchorValues = Services.ContentService.GetAnchorValuesFromRTEs(id);
|
||||
|
||||
@@ -293,13 +293,6 @@ namespace Umbraco.Web
|
||||
_controllerName = controllerName;
|
||||
_encryptedString = UmbracoHelper.CreateEncryptedRouteString(controllerName, controllerAction, area, additionalRouteVals);
|
||||
|
||||
//For UmbracoForm's we want to add our routing string to the httpcontext items in the case where anti-forgery tokens are used.
|
||||
//In which case our custom UmbracoAntiForgeryAdditionalDataProvider will kick in and validate the values in the request against
|
||||
//the values that will be appended to the token. This essentially means that when anti-forgery tokens are used with UmbracoForm's forms,
|
||||
//that each token is unique to the controller/action/area instead of the default ASP.Net implementation which is that the token is unique
|
||||
//per user.
|
||||
_viewContext.HttpContext.Items["ufprt"] = _encryptedString;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Web;
|
||||
|
||||
namespace Umbraco.Web.Mvc
|
||||
{
|
||||
/// <summary>
|
||||
/// Exception that occurs when an Umbraco form route string is invalid
|
||||
/// </summary>
|
||||
/// <seealso cref="System.Web.HttpException" />
|
||||
[Serializable]
|
||||
public sealed class HttpUmbracoFormRouteStringException : HttpException
|
||||
{
|
||||
/// Initializes a new instance of the <see cref="HttpUmbracoFormRouteStringException" /> class.
|
||||
/// </summary>
|
||||
/// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> that holds the serialized object data about the exception being thrown.</param>
|
||||
/// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext" /> that holds the contextual information about the source or destination.</param>
|
||||
private HttpUmbracoFormRouteStringException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HttpUmbracoFormRouteStringException" /> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The error message displayed to the client when the exception is thrown.</param>
|
||||
public HttpUmbracoFormRouteStringException(string message)
|
||||
: base(message)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HttpUmbracoFormRouteStringException" /> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The error message displayed to the client when the exception is thrown.</param>
|
||||
/// <param name="innerException">The <see cref="P:System.Exception.InnerException" />, if any, that threw the current exception.</param>
|
||||
public HttpUmbracoFormRouteStringException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{ }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Web.Mvc;
|
||||
using Umbraco.Core;
|
||||
|
||||
namespace Umbraco.Web.Mvc
|
||||
{
|
||||
/// <summary>
|
||||
/// Attribute used to check that the request contains a valid Umbraco form request string.
|
||||
/// </summary>
|
||||
/// <seealso cref="System.Web.Mvc.FilterAttribute" />
|
||||
/// <seealso cref="System.Web.Mvc.IAuthorizationFilter" />
|
||||
/// <remarks>
|
||||
/// Applying this attribute/filter to a <see cref="SurfaceController"/> or SurfaceController Action will ensure that the Action can only be executed
|
||||
/// when it is routed to from within Umbraco, typically when rendering a form with BegingUmbracoForm. It will mean that the natural MVC route for this Action
|
||||
/// will fail with a <see cref="HttpUmbracoFormRouteStringException"/>.
|
||||
/// </remarks>
|
||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
||||
public sealed class ValidateUmbracoFormRouteStringAttribute : FilterAttribute, IAuthorizationFilter
|
||||
{
|
||||
/// <summary>
|
||||
/// Called when authorization is required.
|
||||
/// </summary>
|
||||
/// <param name="filterContext">The filter context.</param>
|
||||
/// <exception cref="ArgumentNullException">filterContext</exception>
|
||||
/// <exception cref="Umbraco.Web.Mvc.HttpUmbracoFormRouteStringException">The required request field \"ufprt\" is not present.
|
||||
/// or
|
||||
/// The Umbraco form request route string could not be decrypted.
|
||||
/// or
|
||||
/// The provided Umbraco form request route string was meant for a different controller and action.</exception>
|
||||
public void OnAuthorization(AuthorizationContext filterContext)
|
||||
{
|
||||
if (filterContext == null)
|
||||
throw new ArgumentNullException(nameof(filterContext));
|
||||
|
||||
var ufprt = filterContext.HttpContext.Request["ufprt"];
|
||||
ValidateRouteString(ufprt, filterContext.ActionDescriptor?.ControllerDescriptor.ControllerName, filterContext.ActionDescriptor?.ActionName, filterContext.RouteData?.DataTokens["area"]?.ToString());
|
||||
}
|
||||
|
||||
public void ValidateRouteString(string ufprt, string currentController, string currentAction, string currentArea)
|
||||
{
|
||||
if (ufprt.IsNullOrWhiteSpace())
|
||||
{
|
||||
throw new HttpUmbracoFormRouteStringException("The required request field \"ufprt\" is not present.");
|
||||
}
|
||||
|
||||
if (!UmbracoHelper.DecryptAndValidateEncryptedRouteString(ufprt, out var additionalDataParts))
|
||||
{
|
||||
throw new HttpUmbracoFormRouteStringException("The Umbraco form request route string could not be decrypted.");
|
||||
}
|
||||
|
||||
if (!additionalDataParts[RenderRouteHandler.ReservedAdditionalKeys.Controller].InvariantEquals(currentController) ||
|
||||
!additionalDataParts[RenderRouteHandler.ReservedAdditionalKeys.Action].InvariantEquals(currentAction) ||
|
||||
(!additionalDataParts[RenderRouteHandler.ReservedAdditionalKeys.Area].IsNullOrWhiteSpace() && !additionalDataParts[RenderRouteHandler.ReservedAdditionalKeys.Area].InvariantEquals(currentArea)))
|
||||
{
|
||||
throw new HttpUmbracoFormRouteStringException("The provided Umbraco form request route string was meant for a different controller and action.");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,8 +11,5 @@
|
||||
<Setting Name="test" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">Somthing</Value>
|
||||
</Setting>
|
||||
<Setting Name="umbraco_org_umbraco_our_Repository" Type="(Web Service URL)" Scope="Application">
|
||||
<Value Profile="(Default)">https://our.umbraco.com/umbraco/webservices/api/repository.asmx</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
+1
-11
@@ -12,7 +12,7 @@ namespace Umbraco.Web.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.2.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -50,15 +50,5 @@ namespace Umbraco.Web.Properties {
|
||||
return ((string)(this["test"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://our.umbraco.com/umbraco/webservices/api/repository.asmx")]
|
||||
public string umbraco_org_umbraco_our_Repository {
|
||||
get {
|
||||
return ((string)(this["umbraco_org_umbraco_our_Repository"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@ using Umbraco.Core;
|
||||
using System.Web.Helpers;
|
||||
using System.Web;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace Umbraco.Web.Security
|
||||
{
|
||||
/// <summary>
|
||||
/// A custom <see cref="IAntiForgeryAdditionalDataProvider"/> to create a unique antiforgery token/validator per form created with BeginUmbracoForm
|
||||
/// </summary>
|
||||
[Obsolete("This is no longer used and will be removed from the codebase in future versions")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public class UmbracoAntiForgeryAdditionalDataProvider : IAntiForgeryAdditionalDataProvider
|
||||
{
|
||||
private readonly IAntiForgeryAdditionalDataProvider _defaultProvider;
|
||||
|
||||
@@ -307,7 +307,8 @@
|
||||
<Compile Include="Cache\TemplateCacheRefresher.cs" />
|
||||
<Compile Include="Cache\UnpublishedPageCacheRefresher.cs" />
|
||||
<Compile Include="Cache\UserCacheRefresher.cs" />
|
||||
<Compile Include="Security\UmbracoAntiForgeryAdditionalDataProvider.cs" />
|
||||
<Compile Include="Mvc\HttpUmbracoFormRouteStringException.cs" />
|
||||
<Compile Include="Mvc\ValidateUmbracoFormRouteStringAttribute.cs" />
|
||||
<Compile Include="Editors\PreviewController.cs" />
|
||||
<Compile Include="Editors\BackOfficeAssetsController.cs" />
|
||||
<Compile Include="Features\DisabledFeatures.cs" />
|
||||
@@ -340,6 +341,7 @@
|
||||
<Compile Include="Models\Mapping\MemberTreeNodeUrlResolver.cs" />
|
||||
<Compile Include="Models\Trees\ExportMember.cs" />
|
||||
<Compile Include="PropertyEditors\DropdownFlexiblePropertyEditor.cs" />
|
||||
<Compile Include="Security\UmbracoAntiForgeryAdditionalDataProvider.cs" />
|
||||
<Compile Include="TourFilterResolver.cs" />
|
||||
<Compile Include="Editors\UserEditorAuthorizationHelper.cs" />
|
||||
<Compile Include="Editors\UserGroupAuthorizationAttribute.cs" />
|
||||
@@ -812,11 +814,6 @@
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\loadPackager.cs" />
|
||||
<Compile Include="PublishedCache\XmlPublishedCache\XmlCacheFilePersister.cs" />
|
||||
<Compile Include="UmbracoComponentRenderer.cs" />
|
||||
<Compile Include="Web References\org.umbraco.our\Reference.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WebApi\AngularJsonMediaTypeFormatter.cs" />
|
||||
<Compile Include="WebApi\AngularJsonOnlyConfigurationAttribute.cs" />
|
||||
<Compile Include="WebApi\Binders\BlueprintItemBinder.cs" />
|
||||
@@ -1828,11 +1825,6 @@
|
||||
<Link>Mvc\web.config</Link>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Web References\org.umbraco.our\Reference.map">
|
||||
<Generator>MSDiscoCodeGenerator</Generator>
|
||||
<LastGenOutput>Reference.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Web References\org.umbraco.our\repository.disco" />
|
||||
<EmbeddedResource Include="UI\JavaScript\Main.js" />
|
||||
<EmbeddedResource Include="UI\JavaScript\JsInitialize.js" />
|
||||
<EmbeddedResource Include="UI\JavaScript\ServerVariables.js" />
|
||||
@@ -1883,7 +1875,6 @@
|
||||
<Content Include="umbraco.presentation\umbraco\members\ViewMembers.aspx" />
|
||||
<Content Include="umbraco.presentation\umbraco\plugins\tinymce3\tinymce3tinymceCompress.aspx" />
|
||||
<None Include="app.config" />
|
||||
<None Include="Web References\org.umbraco.our\repository.wsdl" />
|
||||
<None Include="Web References\org.umbraco.update\UpgradeResult.datasource">
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</None>
|
||||
@@ -1977,17 +1968,6 @@
|
||||
<WebReferences Include="Web References\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WebReferenceUrl Include="https://our.umbraco.com/umbraco/webservices/api/repository.asmx">
|
||||
<UrlBehavior>Dynamic</UrlBehavior>
|
||||
<RelPath>Web References\org.umbraco.our\</RelPath>
|
||||
<UpdateFromURL>https://our.umbraco.com/umbraco/webservices/api/repository.asmx</UpdateFromURL>
|
||||
<ServiceLocationURL>
|
||||
</ServiceLocationURL>
|
||||
<CachedDynamicPropName>
|
||||
</CachedDynamicPropName>
|
||||
<CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
|
||||
<CachedSettingsPropName>umbraco_org_umbraco_our_Repository</CachedSettingsPropName>
|
||||
</WebReferenceUrl>
|
||||
<WebReferenceUrl Include="http://update.umbraco.org/checkforupgrade.asmx">
|
||||
<UrlBehavior>Dynamic</UrlBehavior>
|
||||
<RelPath>Web References\org.umbraco.update\</RelPath>
|
||||
|
||||
@@ -492,6 +492,18 @@ namespace Umbraco.Web
|
||||
return Url(nodeId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a string with a friendly url from a node.
|
||||
/// IE.: Instead of having /482 (id) as an url, you can have
|
||||
/// /screenshots/developer/macros (spoken url)
|
||||
/// </summary>
|
||||
/// <param name="guid">Identifier for the node that should be returned</param>
|
||||
/// <returns>String with a friendly url from a node</returns>
|
||||
public string NiceUrl(Guid guid)
|
||||
{
|
||||
return Url(guid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the url of a content identified by its identifier.
|
||||
/// </summary>
|
||||
@@ -502,6 +514,16 @@ namespace Umbraco.Web
|
||||
return UrlProvider.GetUrl(contentId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the url of a content identified by its identifier.
|
||||
/// </summary>
|
||||
/// <param name="contentGuid">The content identifier.</param>
|
||||
/// <returns>The url for the content.</returns>
|
||||
public string Url(Guid contentGuid)
|
||||
{
|
||||
return UrlProvider.GetUrl(contentGuid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the url of a content identified by its identifier, in a specified mode.
|
||||
/// </summary>
|
||||
@@ -513,6 +535,17 @@ namespace Umbraco.Web
|
||||
return UrlProvider.GetUrl(contentId, mode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the url of a content identified by its identifier, in a specified mode.
|
||||
/// </summary>
|
||||
/// <param name="contentGuid">The content identifier.</param>
|
||||
/// <param name="mode">The mode.</param>
|
||||
/// <returns>The url for the content.</returns>
|
||||
public string Url(Guid contentGuid, UrlProviderMode mode)
|
||||
{
|
||||
return UrlProvider.GetUrl(contentGuid, mode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method will always add the domain to the path if the hostnames are set up correctly.
|
||||
/// </summary>
|
||||
@@ -1656,7 +1689,7 @@ namespace Umbraco.Web
|
||||
{
|
||||
decryptedString = ufprt.DecryptWithMachineKey();
|
||||
}
|
||||
catch (FormatException)
|
||||
catch (Exception ex) when (ex is FormatException || ex is ArgumentException)
|
||||
{
|
||||
LogHelper.Warn<UmbracoHelper>("A value was detected in the ufprt parameter but Umbraco could not decrypt the string");
|
||||
parts = null;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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="https://our.umbraco.com/umbraco/webservices/api/repository.asmx?wsdl" filename="repository.wsdl" />
|
||||
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="https://our.umbraco.com/umbraco/webservices/api/repository.asmx?disco" filename="repository.disco" />
|
||||
</Results>
|
||||
</DiscoveryClientResultsFile>
|
||||
@@ -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="https://our.umbraco.com/umbraco/webservices/api/repository.asmx?wsdl" docRef="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
|
||||
<soap address="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" xmlns:q1="http://packages.umbraco.org/webservices/" binding="q1:RepositorySoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
|
||||
<soap address="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" xmlns:q2="http://packages.umbraco.org/webservices/" binding="q2:RepositorySoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
|
||||
</discovery>
|
||||
@@ -1,995 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 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://packages.umbraco.org/webservices/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s2="http://packages.umbraco.org/webservices/AbstractTypes" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://packages.umbraco.org/webservices/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
||||
<wsdl:types>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://packages.umbraco.org/webservices/">
|
||||
<s:import namespace="http://microsoft.com/wsdl/types/" />
|
||||
<s:element name="Categories">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="repositoryGuid" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="CategoriesResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="CategoriesResult" type="tns:ArrayOfCategory" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:complexType name="ArrayOfCategory">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="Category" nillable="true" type="tns:Category" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="Category">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Text" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Url" type="s:string" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Packages" type="tns:ArrayOfPackage" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ArrayOfPackage">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="Package" nillable="true" type="tns:Package" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="Package">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="RepoGuid" type="s1:guid" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Text" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Icon" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Thumbnail" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Documentation" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Demo" type="s:string" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Accepted" type="s:boolean" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="IsModule" type="s:boolean" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="EditorsPick" type="s:boolean" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Protected" type="s:boolean" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="HasUpgrade" type="s:boolean" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="UpgradeVersion" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="UpgradeReadMe" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Url" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:element name="Modules">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="ModulesResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ModulesResult" type="tns:ArrayOfPackage" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="ModulesCategorized">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="ModulesCategorizedResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ModulesCategorizedResult" type="tns:ArrayOfCategory" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="Nitros">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="NitrosResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="NitrosResult" type="tns:ArrayOfPackage" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="NitrosCategorized">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="NitrosCategorizedResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="NitrosCategorizedResult" type="tns:ArrayOfCategory" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="authenticate">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="email" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="md5Password" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="authenticateResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="authenticateResult" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="fetchPackage">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageGuid" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="fetchPackageResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="fetchPackageResult" type="s:base64Binary" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="fetchPackageByVersion">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageGuid" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="repoVersion" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="fetchPackageByVersionResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="fetchPackageByVersionResult" type="s:base64Binary" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="fetchProtectedPackage">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageGuid" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="memberKey" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="fetchProtectedPackageResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="fetchProtectedPackageResult" type="s:base64Binary" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="SubmitPackage">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="repositoryGuid" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="authorGuid" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageGuid" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageFile" type="s:base64Binary" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageDoc" type="s:base64Binary" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageThumbnail" type="s:base64Binary" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="name" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="author" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="authorUrl" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="description" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="SubmitPackageResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="SubmitPackageResult" type="tns:SubmitStatus" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:simpleType name="SubmitStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Complete" />
|
||||
<s:enumeration value="Exists" />
|
||||
<s:enumeration value="NoAccess" />
|
||||
<s:enumeration value="Error" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:element name="PackageByGuid">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="packageGuid" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="PackageByGuidResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="PackageByGuidResult" type="tns:Package" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="ArrayOfCategory" nillable="true" type="tns:ArrayOfCategory" />
|
||||
<s:element name="ArrayOfPackage" nillable="true" type="tns:ArrayOfPackage" />
|
||||
<s:element name="string" nillable="true" type="s:string" />
|
||||
<s:element name="base64Binary" nillable="true" type="s:base64Binary" />
|
||||
<s:element name="SubmitStatus" type="tns:SubmitStatus" />
|
||||
<s:element name="Package" nillable="true" type="tns:Package" />
|
||||
</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>
|
||||
<s:schema targetNamespace="http://packages.umbraco.org/webservices/AbstractTypes">
|
||||
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||
<s:complexType name="StringArray">
|
||||
<s:complexContent mixed="false">
|
||||
<s:restriction base="soapenc:Array">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:restriction>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
</s:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="CategoriesSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:Categories" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="CategoriesSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:CategoriesResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:Modules" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:ModulesResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesCategorizedSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:ModulesCategorized" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesCategorizedSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:ModulesCategorizedResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:Nitros" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:NitrosResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosCategorizedSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:NitrosCategorized" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosCategorizedSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:NitrosCategorizedResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="authenticateSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:authenticate" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="authenticateSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:authenticateResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:fetchPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:fetchPackageResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageByVersionSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:fetchPackageByVersion" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageByVersionSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:fetchPackageByVersionResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchProtectedPackageSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:fetchProtectedPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchProtectedPackageSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:fetchProtectedPackageResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="SubmitPackageSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:SubmitPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="SubmitPackageSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:SubmitPackageResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="PackageByGuidSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:PackageByGuid" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="PackageByGuidSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:PackageByGuidResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="CategoriesHttpGetIn">
|
||||
<wsdl:part name="repositoryGuid" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="CategoriesHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfCategory" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesHttpGetIn" />
|
||||
<wsdl:message name="ModulesHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesCategorizedHttpGetIn" />
|
||||
<wsdl:message name="ModulesCategorizedHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfCategory" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosHttpGetIn" />
|
||||
<wsdl:message name="NitrosHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosCategorizedHttpGetIn" />
|
||||
<wsdl:message name="NitrosCategorizedHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfCategory" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="authenticateHttpGetIn">
|
||||
<wsdl:part name="email" type="s:string" />
|
||||
<wsdl:part name="md5Password" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="authenticateHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageHttpGetIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:base64Binary" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageByVersionHttpGetIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
<wsdl:part name="repoVersion" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageByVersionHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:base64Binary" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchProtectedPackageHttpGetIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
<wsdl:part name="memberKey" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchProtectedPackageHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:base64Binary" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="SubmitPackageHttpGetIn">
|
||||
<wsdl:part name="repositoryGuid" type="s:string" />
|
||||
<wsdl:part name="authorGuid" type="s:string" />
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
<wsdl:part name="packageFile" type="s2:StringArray" />
|
||||
<wsdl:part name="packageDoc" type="s2:StringArray" />
|
||||
<wsdl:part name="packageThumbnail" type="s2:StringArray" />
|
||||
<wsdl:part name="name" type="s:string" />
|
||||
<wsdl:part name="author" type="s:string" />
|
||||
<wsdl:part name="authorUrl" type="s:string" />
|
||||
<wsdl:part name="description" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="SubmitPackageHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:SubmitStatus" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="PackageByGuidHttpGetIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="PackageByGuidHttpGetOut">
|
||||
<wsdl:part name="Body" element="tns:Package" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="CategoriesHttpPostIn">
|
||||
<wsdl:part name="repositoryGuid" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="CategoriesHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfCategory" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesHttpPostIn" />
|
||||
<wsdl:message name="ModulesHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ModulesCategorizedHttpPostIn" />
|
||||
<wsdl:message name="ModulesCategorizedHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfCategory" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosHttpPostIn" />
|
||||
<wsdl:message name="NitrosHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfPackage" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NitrosCategorizedHttpPostIn" />
|
||||
<wsdl:message name="NitrosCategorizedHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:ArrayOfCategory" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="authenticateHttpPostIn">
|
||||
<wsdl:part name="email" type="s:string" />
|
||||
<wsdl:part name="md5Password" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="authenticateHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageHttpPostIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:base64Binary" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageByVersionHttpPostIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
<wsdl:part name="repoVersion" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchPackageByVersionHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:base64Binary" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchProtectedPackageHttpPostIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
<wsdl:part name="memberKey" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="fetchProtectedPackageHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:base64Binary" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="SubmitPackageHttpPostIn">
|
||||
<wsdl:part name="repositoryGuid" type="s:string" />
|
||||
<wsdl:part name="authorGuid" type="s:string" />
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
<wsdl:part name="packageFile" type="s2:StringArray" />
|
||||
<wsdl:part name="packageDoc" type="s2:StringArray" />
|
||||
<wsdl:part name="packageThumbnail" type="s2:StringArray" />
|
||||
<wsdl:part name="name" type="s:string" />
|
||||
<wsdl:part name="author" type="s:string" />
|
||||
<wsdl:part name="authorUrl" type="s:string" />
|
||||
<wsdl:part name="description" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="SubmitPackageHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:SubmitStatus" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="PackageByGuidHttpPostIn">
|
||||
<wsdl:part name="packageGuid" type="s:string" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="PackageByGuidHttpPostOut">
|
||||
<wsdl:part name="Body" element="tns:Package" />
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="RepositorySoap">
|
||||
<wsdl:operation name="Categories">
|
||||
<wsdl:input message="tns:CategoriesSoapIn" />
|
||||
<wsdl:output message="tns:CategoriesSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<wsdl:input message="tns:ModulesSoapIn" />
|
||||
<wsdl:output message="tns:ModulesSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<wsdl:input message="tns:ModulesCategorizedSoapIn" />
|
||||
<wsdl:output message="tns:ModulesCategorizedSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<wsdl:input message="tns:NitrosSoapIn" />
|
||||
<wsdl:output message="tns:NitrosSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<wsdl:input message="tns:NitrosCategorizedSoapIn" />
|
||||
<wsdl:output message="tns:NitrosCategorizedSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<wsdl:input message="tns:authenticateSoapIn" />
|
||||
<wsdl:output message="tns:authenticateSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<wsdl:input message="tns:fetchPackageSoapIn" />
|
||||
<wsdl:output message="tns:fetchPackageSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<wsdl:input message="tns:fetchPackageByVersionSoapIn" />
|
||||
<wsdl:output message="tns:fetchPackageByVersionSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<wsdl:input message="tns:fetchProtectedPackageSoapIn" />
|
||||
<wsdl:output message="tns:fetchProtectedPackageSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<wsdl:input message="tns:SubmitPackageSoapIn" />
|
||||
<wsdl:output message="tns:SubmitPackageSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<wsdl:input message="tns:PackageByGuidSoapIn" />
|
||||
<wsdl:output message="tns:PackageByGuidSoapOut" />
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:portType name="RepositoryHttpGet">
|
||||
<wsdl:operation name="Categories">
|
||||
<wsdl:input message="tns:CategoriesHttpGetIn" />
|
||||
<wsdl:output message="tns:CategoriesHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<wsdl:input message="tns:ModulesHttpGetIn" />
|
||||
<wsdl:output message="tns:ModulesHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<wsdl:input message="tns:ModulesCategorizedHttpGetIn" />
|
||||
<wsdl:output message="tns:ModulesCategorizedHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<wsdl:input message="tns:NitrosHttpGetIn" />
|
||||
<wsdl:output message="tns:NitrosHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<wsdl:input message="tns:NitrosCategorizedHttpGetIn" />
|
||||
<wsdl:output message="tns:NitrosCategorizedHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<wsdl:input message="tns:authenticateHttpGetIn" />
|
||||
<wsdl:output message="tns:authenticateHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<wsdl:input message="tns:fetchPackageHttpGetIn" />
|
||||
<wsdl:output message="tns:fetchPackageHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<wsdl:input message="tns:fetchPackageByVersionHttpGetIn" />
|
||||
<wsdl:output message="tns:fetchPackageByVersionHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<wsdl:input message="tns:fetchProtectedPackageHttpGetIn" />
|
||||
<wsdl:output message="tns:fetchProtectedPackageHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<wsdl:input message="tns:SubmitPackageHttpGetIn" />
|
||||
<wsdl:output message="tns:SubmitPackageHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<wsdl:input message="tns:PackageByGuidHttpGetIn" />
|
||||
<wsdl:output message="tns:PackageByGuidHttpGetOut" />
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:portType name="RepositoryHttpPost">
|
||||
<wsdl:operation name="Categories">
|
||||
<wsdl:input message="tns:CategoriesHttpPostIn" />
|
||||
<wsdl:output message="tns:CategoriesHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<wsdl:input message="tns:ModulesHttpPostIn" />
|
||||
<wsdl:output message="tns:ModulesHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<wsdl:input message="tns:ModulesCategorizedHttpPostIn" />
|
||||
<wsdl:output message="tns:ModulesCategorizedHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<wsdl:input message="tns:NitrosHttpPostIn" />
|
||||
<wsdl:output message="tns:NitrosHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<wsdl:input message="tns:NitrosCategorizedHttpPostIn" />
|
||||
<wsdl:output message="tns:NitrosCategorizedHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<wsdl:input message="tns:authenticateHttpPostIn" />
|
||||
<wsdl:output message="tns:authenticateHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<wsdl:input message="tns:fetchPackageHttpPostIn" />
|
||||
<wsdl:output message="tns:fetchPackageHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<wsdl:input message="tns:fetchPackageByVersionHttpPostIn" />
|
||||
<wsdl:output message="tns:fetchPackageByVersionHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<wsdl:input message="tns:fetchProtectedPackageHttpPostIn" />
|
||||
<wsdl:output message="tns:fetchProtectedPackageHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<wsdl:input message="tns:SubmitPackageHttpPostIn" />
|
||||
<wsdl:output message="tns:SubmitPackageHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<wsdl:input message="tns:PackageByGuidHttpPostIn" />
|
||||
<wsdl:output message="tns:PackageByGuidHttpPostOut" />
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="RepositorySoap" type="tns:RepositorySoap">
|
||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="Categories">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/Categories" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/Modules" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/ModulesCategorized" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/Nitros" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/NitrosCategorized" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/authenticate" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/fetchPackage" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/fetchPackageByVersion" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/fetchProtectedPackage" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/SubmitPackage" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<soap:operation soapAction="http://packages.umbraco.org/webservices/PackageByGuid" 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="RepositorySoap12" type="tns:RepositorySoap">
|
||||
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="Categories">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/Categories" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/Modules" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/ModulesCategorized" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/Nitros" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/NitrosCategorized" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/authenticate" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/fetchPackage" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/fetchPackageByVersion" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/fetchProtectedPackage" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/SubmitPackage" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<soap12:operation soapAction="http://packages.umbraco.org/webservices/PackageByGuid" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:binding name="RepositoryHttpGet" type="tns:RepositoryHttpGet">
|
||||
<http:binding verb="GET" />
|
||||
<wsdl:operation name="Categories">
|
||||
<http:operation location="/Categories" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<http:operation location="/Modules" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<http:operation location="/ModulesCategorized" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<http:operation location="/Nitros" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<http:operation location="/NitrosCategorized" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<http:operation location="/authenticate" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<http:operation location="/fetchPackage" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<http:operation location="/fetchPackageByVersion" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<http:operation location="/fetchProtectedPackage" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<http:operation location="/SubmitPackage" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<http:operation location="/PackageByGuid" />
|
||||
<wsdl:input>
|
||||
<http:urlEncoded />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:binding name="RepositoryHttpPost" type="tns:RepositoryHttpPost">
|
||||
<http:binding verb="POST" />
|
||||
<wsdl:operation name="Categories">
|
||||
<http:operation location="/Categories" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Modules">
|
||||
<http:operation location="/Modules" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ModulesCategorized">
|
||||
<http:operation location="/ModulesCategorized" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="Nitros">
|
||||
<http:operation location="/Nitros" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="NitrosCategorized">
|
||||
<http:operation location="/NitrosCategorized" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="authenticate">
|
||||
<http:operation location="/authenticate" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackage">
|
||||
<http:operation location="/fetchPackage" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchPackageByVersion">
|
||||
<http:operation location="/fetchPackageByVersion" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="fetchProtectedPackage">
|
||||
<http:operation location="/fetchProtectedPackage" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="SubmitPackage">
|
||||
<http:operation location="/SubmitPackage" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="PackageByGuid">
|
||||
<http:operation location="/PackageByGuid" />
|
||||
<wsdl:input>
|
||||
<mime:content type="application/x-www-form-urlencoded" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<mime:mimeXml part="Body" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="Repository">
|
||||
<wsdl:port name="RepositorySoap" binding="tns:RepositorySoap">
|
||||
<soap:address location="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" />
|
||||
</wsdl:port>
|
||||
<wsdl:port name="RepositorySoap12" binding="tns:RepositorySoap12">
|
||||
<soap12:address location="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" />
|
||||
</wsdl:port>
|
||||
<wsdl:port name="RepositoryHttpGet" binding="tns:RepositoryHttpGet">
|
||||
<http:address location="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" />
|
||||
</wsdl:port>
|
||||
<wsdl:port name="RepositoryHttpPost" binding="tns:RepositoryHttpPost">
|
||||
<http:address location="https://our.umbraco.com/umbraco/webservices/api/repository.asmx" />
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
||||
@@ -190,8 +190,6 @@ namespace Umbraco.Web
|
||||
|
||||
base.Complete(afterComplete);
|
||||
|
||||
AntiForgeryConfig.AdditionalDataProvider = new UmbracoAntiForgeryAdditionalDataProvider(AntiForgeryConfig.AdditionalDataProvider);
|
||||
|
||||
//Now, startup all of our legacy startup handler
|
||||
ApplicationEventsResolver.Current.InstantiateLegacyStartupHandlers();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user