Merge
This commit is contained in:
@@ -66,6 +66,15 @@ namespace Umbraco.Core.Models.EntityBase
|
||||
[DataMember]
|
||||
public DateTime UpdateDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the WasCancelled flag, which is used to track
|
||||
/// whether some action against an entity was cancelled through some event.
|
||||
/// This only exists so we have a way to check if an event was cancelled through
|
||||
/// the new api, which also needs to take effect in the legacy api.
|
||||
/// </summary>
|
||||
[IgnoreDataMember]
|
||||
internal bool WasCancelled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Property changed event
|
||||
/// </summary>
|
||||
|
||||
@@ -64,13 +64,15 @@ namespace Umbraco.Core.Services
|
||||
/// <returns><see cref="IContent"/></returns>
|
||||
public IContent CreateContent(string name, int parentId, string contentTypeAlias, int userId = 0)
|
||||
{
|
||||
IContentType contentType = FindContentTypeByAlias(contentTypeAlias);
|
||||
IContent content = null;
|
||||
var contentType = FindContentTypeByAlias(contentTypeAlias);
|
||||
var content = new Content(name, parentId, contentType); ;
|
||||
|
||||
if (Creating.IsRaisedEventCancelled(new NewEventArgs<IContent>(content, contentTypeAlias, parentId), this))
|
||||
return content;
|
||||
{
|
||||
content.WasCancelled = true;
|
||||
return content;
|
||||
}
|
||||
|
||||
content = new Content(name, parentId, contentType);
|
||||
content.CreatorId = userId;
|
||||
content.WriterId = userId;
|
||||
|
||||
@@ -92,13 +94,15 @@ namespace Umbraco.Core.Services
|
||||
/// <returns><see cref="IContent"/></returns>
|
||||
public IContent CreateContent(string name, IContent parent, string contentTypeAlias, int userId = 0)
|
||||
{
|
||||
IContentType contentType = FindContentTypeByAlias(contentTypeAlias);
|
||||
IContent content = null;
|
||||
var contentType = FindContentTypeByAlias(contentTypeAlias);
|
||||
var content = new Content(name, parent, contentType);
|
||||
|
||||
if (Creating.IsRaisedEventCancelled(new NewEventArgs<IContent>(content, contentTypeAlias, parent), this))
|
||||
{
|
||||
content.WasCancelled = true;
|
||||
return content;
|
||||
}
|
||||
|
||||
content = new Content(name, parent, contentType);
|
||||
content.CreatorId = userId;
|
||||
content.WriterId = userId;
|
||||
|
||||
|
||||
@@ -46,11 +46,8 @@ namespace Umbraco.Core.Services
|
||||
/// <returns><see cref="IMedia"/></returns>
|
||||
public IMedia CreateMedia(string name, int parentId, string mediaTypeAlias, int userId = 0)
|
||||
{
|
||||
Models.Media media = null;
|
||||
IMediaType mediaType = null;
|
||||
if (Creating.IsRaisedEventCancelled(new NewEventArgs<IMedia>(media, mediaTypeAlias, parentId), this))
|
||||
return media;
|
||||
|
||||
IMediaType mediaType;
|
||||
|
||||
var uow = _uowProvider.GetUnitOfWork();
|
||||
using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow))
|
||||
{
|
||||
@@ -68,7 +65,13 @@ namespace Umbraco.Core.Services
|
||||
mediaTypeAlias));
|
||||
}
|
||||
|
||||
media = new Models.Media(name, parentId, mediaType);
|
||||
var media = new Models.Media(name, parentId, mediaType);
|
||||
|
||||
if (Creating.IsRaisedEventCancelled(new NewEventArgs<IMedia>(media, mediaTypeAlias, parentId), this))
|
||||
{
|
||||
media.WasCancelled = true;
|
||||
return media;
|
||||
}
|
||||
|
||||
media.CreatorId = userId;
|
||||
|
||||
@@ -90,11 +93,7 @@ namespace Umbraco.Core.Services
|
||||
/// <returns><see cref="IMedia"/></returns>
|
||||
public IMedia CreateMedia(string name, IMedia parent, string mediaTypeAlias, int userId = 0)
|
||||
{
|
||||
Models.Media media = null;
|
||||
IMediaType mediaType = null;
|
||||
|
||||
if (Creating.IsRaisedEventCancelled(new NewEventArgs<IMedia>(media, mediaTypeAlias, parent), this))
|
||||
return media;
|
||||
IMediaType mediaType;
|
||||
|
||||
var uow = _uowProvider.GetUnitOfWork();
|
||||
using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow))
|
||||
@@ -113,7 +112,12 @@ namespace Umbraco.Core.Services
|
||||
mediaTypeAlias));
|
||||
}
|
||||
|
||||
media = new Models.Media(name, parent, mediaType);
|
||||
var media = new Models.Media(name, parent, mediaType);
|
||||
if (Creating.IsRaisedEventCancelled(new NewEventArgs<IMedia>(media, mediaTypeAlias, parent), this))
|
||||
{
|
||||
media.WasCancelled = true;
|
||||
return media;
|
||||
}
|
||||
|
||||
media.CreatorId = userId;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using umbraco.BusinessLogic;
|
||||
using umbraco.DataLayer;
|
||||
using System.Collections;
|
||||
@@ -85,8 +86,8 @@ namespace umbraco.cms.businesslogic.media
|
||||
}
|
||||
|
||||
var media = ApplicationContext.Current.Services.MediaService.CreateMedia(Name, ParentId, dct.Alias, u.Id);
|
||||
//The media object will only be null if the 'Creating' event has been cancelled
|
||||
if (media == null)
|
||||
//The media object will only have the 'WasCancelled' flag set to 'True' if the 'Creating' event has been cancelled
|
||||
if (((Entity)media).WasCancelled)
|
||||
return null;
|
||||
|
||||
ApplicationContext.Current.Services.MediaService.Save(media);
|
||||
|
||||
@@ -85,15 +85,20 @@ namespace umbraco.cms.businesslogic.media
|
||||
if (childMedia.ContentType.Alias == MediaTypeAlias)
|
||||
{
|
||||
var prop = childMedia.getProperty("umbracoFile");
|
||||
if (prop != null)
|
||||
if (prop != null && prop.Value != null)
|
||||
{
|
||||
var destFilePath = FileSystem.GetRelativePath(prop.Id, fileName);
|
||||
var destFileUrl = FileSystem.GetUrl(destFilePath);
|
||||
|
||||
if (prop.Value.ToString() == destFileUrl)
|
||||
int subfolderId;
|
||||
var subfolder = prop.Value.ToString().Replace(FileSystem.GetUrl("/"), "").Split('/')[0];
|
||||
if (int.TryParse(subfolder, out subfolderId))
|
||||
{
|
||||
existingMedia = childMedia;
|
||||
return true;
|
||||
var destFilePath = FileSystem.GetRelativePath(subfolderId, fileName);
|
||||
var destFileUrl = FileSystem.GetUrl(destFilePath);
|
||||
|
||||
if (prop.Value.ToString() == destFileUrl)
|
||||
{
|
||||
existingMedia = childMedia;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Xml;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Services;
|
||||
using umbraco.BusinessLogic;
|
||||
@@ -288,8 +289,8 @@ namespace umbraco.cms.businesslogic.web
|
||||
|
||||
//Create a new IContent object based on the passed in DocumentType's alias, set the name and save it
|
||||
IContent content = ApplicationContext.Current.Services.ContentService.CreateContent(Name, ParentId, dct.Alias, u.Id);
|
||||
//The content object will only be null if the 'Creating' event has been cancelled, so we return null.
|
||||
if (content == null)
|
||||
//The content object will only have the 'WasCancelled' flag set to 'True' if the 'Creating' event has been cancelled, so we return null.
|
||||
if (((Entity)content).WasCancelled)
|
||||
return null;
|
||||
|
||||
//don't raise events here (false), they will get raised with the d.Save() call.
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Web.Services;
|
||||
using Umbraco.Core.Media;
|
||||
using umbraco.IO;
|
||||
using umbraco.cms.businesslogic.media;
|
||||
using umbraco.cms.businesslogic.property;
|
||||
using Umbraco.Core.IO;
|
||||
using System.Xml;
|
||||
using System.Web;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
using System.Web.Script.Services;
|
||||
@@ -41,12 +39,11 @@ namespace umbraco.webservices.media
|
||||
[WebMethod]
|
||||
public void update(mediaCarrier carrier, string username, string password)
|
||||
{
|
||||
|
||||
Authenticate(username, password);
|
||||
|
||||
if (carrier == null) throw new Exception("No carrier specified");
|
||||
|
||||
Media m = new Media(carrier.Id);
|
||||
var m = new Media(carrier.Id);
|
||||
|
||||
if (carrier.MediaProperties != null)
|
||||
{
|
||||
@@ -68,7 +65,6 @@ namespace umbraco.webservices.media
|
||||
[WebMethod]
|
||||
public int create(mediaCarrier carrier, string username, string password)
|
||||
{
|
||||
|
||||
Authenticate(username, password);
|
||||
|
||||
if (carrier == null) throw new Exception("No carrier specified");
|
||||
@@ -76,12 +72,10 @@ namespace umbraco.webservices.media
|
||||
if (carrier.TypeId == 0) throw new Exception("Type must be specified");
|
||||
if (carrier.Text == null || carrier.Text.Length == 0) carrier.Text = "unnamed";
|
||||
|
||||
umbraco.BusinessLogic.User user = GetUser(username, password);
|
||||
BusinessLogic.User user = GetUser(username, password);
|
||||
|
||||
|
||||
MediaType mt = new MediaType(carrier.TypeId);
|
||||
|
||||
Media m = Media.MakeNew(carrier.Text, mt, user, carrier.ParentId);
|
||||
var mt = new MediaType(carrier.TypeId);
|
||||
var m = Media.MakeNew(carrier.Text, mt, user, carrier.ParentId);
|
||||
|
||||
if (carrier.MediaProperties != null)
|
||||
{
|
||||
@@ -134,10 +128,10 @@ namespace umbraco.webservices.media
|
||||
filename = filename.Replace(@"\", global::Umbraco.Core.IO.IOHelper.DirSepChar.ToString());
|
||||
filename = filename.Substring(filename.LastIndexOf(global::Umbraco.Core.IO.IOHelper.DirSepChar) + 1, filename.Length - filename.LastIndexOf(global::Umbraco.Core.IO.IOHelper.DirSepChar) - 1).ToLower();
|
||||
|
||||
Media m = new Media(id);
|
||||
var m = new Media(id);
|
||||
|
||||
//TODO Fix this as the Id of the umbracoFile-property is no longer used
|
||||
var path = _fs.GetRelativePath(m.getProperty("umbracoFile").Id, filename);
|
||||
var numberedFolder = MediaSubfolderCounter.Current.Increment();
|
||||
var path = _fs.GetRelativePath(numberedFolder.ToString(CultureInfo.InvariantCulture), filename);
|
||||
|
||||
var stream = new MemoryStream();
|
||||
stream.Write(contents, 0, contents.Length);
|
||||
@@ -149,7 +143,7 @@ namespace umbraco.webservices.media
|
||||
m.getProperty("umbracoExtension").Value = Path.GetExtension(filename).Substring(1);
|
||||
m.getProperty("umbracoBytes").Value = _fs.GetSize(path);
|
||||
|
||||
|
||||
m.Save();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
@@ -157,10 +151,8 @@ namespace umbraco.webservices.media
|
||||
{
|
||||
Authenticate(username, password);
|
||||
|
||||
|
||||
Media m = new Media(id);
|
||||
|
||||
|
||||
return createCarrier(m);
|
||||
}
|
||||
|
||||
@@ -169,7 +161,7 @@ namespace umbraco.webservices.media
|
||||
{
|
||||
Authenticate(username, password);
|
||||
|
||||
List<mediaCarrier> carriers = new List<mediaCarrier>();
|
||||
var carriers = new List<mediaCarrier>();
|
||||
Media[] mediaList;
|
||||
|
||||
if (parentId < 1)
|
||||
@@ -256,19 +248,18 @@ namespace umbraco.webservices.media
|
||||
|
||||
private mediaCarrier createCarrier(Media m)
|
||||
{
|
||||
mediaCarrier carrier = new mediaCarrier();
|
||||
carrier.Id = m.Id;
|
||||
carrier.Text = m.Text;
|
||||
|
||||
carrier.TypeAlias = m.ContentType.Alias;
|
||||
carrier.TypeId = m.ContentType.Id;
|
||||
|
||||
carrier.CreateDateTime = m.CreateDateTime;
|
||||
carrier.HasChildren = m.HasChildren;
|
||||
carrier.Level = m.Level;
|
||||
|
||||
carrier.Path = m.Path;
|
||||
carrier.SortOrder = m.sortOrder;
|
||||
var carrier = new mediaCarrier
|
||||
{
|
||||
Id = m.Id,
|
||||
Text = m.Text,
|
||||
TypeAlias = m.ContentType.Alias,
|
||||
TypeId = m.ContentType.Id,
|
||||
CreateDateTime = m.CreateDateTime,
|
||||
HasChildren = m.HasChildren,
|
||||
Level = m.Level,
|
||||
Path = m.Path,
|
||||
SortOrder = m.sortOrder
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
@@ -281,10 +272,9 @@ namespace umbraco.webservices.media
|
||||
|
||||
foreach (Property p in m.GenericProperties)
|
||||
{
|
||||
var carrierprop = new mediaProperty();
|
||||
|
||||
mediaProperty carrierprop = new mediaProperty();
|
||||
|
||||
if (p.Value == System.DBNull.Value)
|
||||
if (p.Value == DBNull.Value)
|
||||
{
|
||||
carrierprop.PropertyValue = "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user