From 071f3dcc017d5f74a8d93a1e7bc06e0252c5385d Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 27 May 2013 06:05:13 -0200 Subject: [PATCH 1/5] Fix javascript error with the speechbubble --- src/Umbraco.Web.UI/umbraco/js/UmbracoSpeechBubbleBackEnd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI/umbraco/js/UmbracoSpeechBubbleBackEnd.js b/src/Umbraco.Web.UI/umbraco/js/UmbracoSpeechBubbleBackEnd.js index acf48ecd83..1214deabc0 100644 --- a/src/Umbraco.Web.UI/umbraco/js/UmbracoSpeechBubbleBackEnd.js +++ b/src/Umbraco.Web.UI/umbraco/js/UmbracoSpeechBubbleBackEnd.js @@ -34,7 +34,7 @@ UmbracoSpeechBubble.prototype.ShowMessage = function (icon, header, message, don if (!dontAutoHide) { jQuery("#" + this.id).fadeIn("slow").animate({ opacity: 1.0 }, 5000).fadeOut("fast"); } else { - speechBubble.jQuery(".speechClose").show(); + jQuery(".speechClose").show(); jQuery("#" + this.id).fadeIn("slow"); } } else { From e50569597b5bbc5145476a8b414efb6c26e7e984 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 27 May 2013 06:10:04 -0200 Subject: [PATCH 2/5] Minor update to legacy ajax calls --- .../umbraco/webservices/legacyAjaxCalls.asmx.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs index 037590d4d5..c377250f43 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs @@ -163,6 +163,8 @@ namespace umbraco.presentation.webservices [ScriptMethod] public string ProgressStatus(string Key) { + AuthorizeRequest(true); + return Application[helper.Request("key")].ToString(); } From f5bf05a6f506ab1541b760661ea8a0136e5b35d7 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 27 May 2013 07:19:42 -0200 Subject: [PATCH 3/5] Move embed media service from webservices dll into it's own /base class --- .../plugins/umbracoembed/js/dialog.js | 72 +++++++--------- src/Umbraco.Web/Umbraco.Web.csproj | 1 + .../WebServices/EmbedMediaService.cs | 84 +++++++++++++++++++ 3 files changed, 117 insertions(+), 40 deletions(-) create mode 100644 src/Umbraco.Web/WebServices/EmbedMediaService.cs diff --git a/src/Umbraco.Web.UI/umbraco_client/tinymce3/plugins/umbracoembed/js/dialog.js b/src/Umbraco.Web.UI/umbraco_client/tinymce3/plugins/umbracoembed/js/dialog.js index 953ce9d8fb..4cf224eb04 100644 --- a/src/Umbraco.Web.UI/umbraco_client/tinymce3/plugins/umbracoembed/js/dialog.js +++ b/src/Umbraco.Web.UI/umbraco_client/tinymce3/plugins/umbracoembed/js/dialog.js @@ -7,7 +7,6 @@ var UmbracoEmbedDialog = { tinyMCEPopup.close(); }, showPreview: function () { - $('#insert').attr('disabled', 'disabled'); var url = $('#url').val(); @@ -16,44 +15,39 @@ var UmbracoEmbedDialog = { $('#preview').html('loading'); $('#source').val(''); - $.ajax( - { - type: 'POST', - async: true, - url: '../../../../umbraco/webservices/api/mediaservice.asmx/Embed', - data: '{ url: "' + url + '", width: "' + width + '", height: "' + height + '" }', - contentType: 'application/json; charset=utf-8', - dataType: 'json', - success: function (msg) { - var resultAsJson = msg.d; - switch (resultAsJson.Status) { - case 0: - //not supported - $('#preview').html('Not Supported'); - break; - case 1: - //error - $('#preview').html('Error'); - break; - case 2: - $('#preview').html(resultAsJson.Markup); - $('#source').val(resultAsJson.Markup); - if (resultAsJson.SupportsDimensions) { - $('#dimensions').show(); - } else { - $('#dimensions').hide(); - } - $('#insert').removeAttr('disabled'); - break; + + $.ajax({ + type: 'POST', + async: true, + url: '../../../../base/EmbedMediaService/Embed/', + data: { url: url, width: width, height: height }, + dataType: 'json', + success: function (result) { + switch (result.Status) { + case 0: + //not supported + $('#preview').html('Not Supported'); + break; + case 1: + //error + $('#preview').html('Error'); + break; + case 2: + $('#preview').html(result.Markup); + $('#source').val(result.Markup); + if (result.SupportsDimensions) { + $('#dimensions').show(); + } else { + $('#dimensions').hide(); } - - }, - error: function (xhr, ajaxOptions, thrownError) { - $('#preview').html("Error"); - //alert(xhr.status); - //alert(thrownError); - } - }); + $('#insert').removeAttr('disabled'); + break; + } + }, + error: function (xhr, ajaxOptions, thrownError) { + $('#preview').html("Error"); + } + }); }, beforeResize: function () { this.width = parseInt($('#width').val(), 10); @@ -73,11 +67,9 @@ var UmbracoEmbedDialog = { $('#width').val(this.width); } } - if ($('#url').val() != '') { UmbracoEmbedDialog.showPreview(); } - }, changeSource: function (type) { if ($('#source').val() != '') { diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 94fcfec57c..bfd320ccc6 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -1803,6 +1803,7 @@ True Reference.map + diff --git a/src/Umbraco.Web/WebServices/EmbedMediaService.cs b/src/Umbraco.Web/WebServices/EmbedMediaService.cs new file mode 100644 index 0000000000..3f18b3a2c3 --- /dev/null +++ b/src/Umbraco.Web/WebServices/EmbedMediaService.cs @@ -0,0 +1,84 @@ +using System; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml; +using Umbraco.Core.Configuration; +using Umbraco.Core.Media; +using umbraco.BusinessLogic; +using Umbraco.Web.BaseRest; + +namespace Umbraco.Web.WebServices +{ + [RestExtension("EmbedMediaService")] + public class EmbedMediaService + { + [RestExtensionMethod(ReturnXml = false)] + public static string Embed() + { + var currentUser = User.GetCurrent(); + + if (currentUser == null) + throw new UnauthorizedAccessException("You must be logged in to use this service"); + + var url = HttpContext.Current.Request.Form["url"]; + var width = int.Parse(HttpContext.Current.Request.Form["width"]); + var height = int.Parse(HttpContext.Current.Request.Form["height"]); + + var result = new Result(); + + //todo cache embed doc + var xmlConfig = new XmlDocument(); + xmlConfig.Load(GlobalSettings.FullpathToRoot + Path.DirectorySeparatorChar + "config" + Path.DirectorySeparatorChar + "EmbeddedMedia.config"); + + foreach (XmlNode node in xmlConfig.SelectNodes("//provider")) + { + var regexPattern = new Regex(node.SelectSingleNode("./urlShemeRegex").InnerText, RegexOptions.IgnoreCase); + + if (regexPattern.IsMatch(url)) + { + var prov = (IEmbedProvider)Activator.CreateInstance(Type.GetType(node.Attributes["type"].Value)); + + if (node.Attributes["supportsDimensions"] != null) + result.SupportsDimensions = node.Attributes["supportsDimensions"].Value == "True"; + else + result.SupportsDimensions = prov.SupportsDimensions; + + var settings = node.ChildNodes.Cast().ToDictionary(settingNode => settingNode.Name); + + foreach (var prop in prov.GetType().GetProperties().Where(prop => prop.IsDefined(typeof(ProviderSetting), true))) + { + + if (settings.Any(s => s.Key.ToLower() == prop.Name.ToLower())) + { + var setting = settings.FirstOrDefault(s => s.Key.ToLower() == prop.Name.ToLower()).Value; + var settingType = typeof(Media.EmbedProviders.Settings.String); + + if (setting.Attributes["type"] != null) + settingType = Type.GetType(setting.Attributes["type"].Value); + + var settingProv = (IEmbedSettingProvider)Activator.CreateInstance(settingType); + prop.SetValue(prov, settingProv.GetSetting(settings.FirstOrDefault(s => s.Key.ToLower() == prop.Name.ToLower()).Value), null); + } + } + try + { + result.Markup = prov.GetMarkup(url, width, height); + result.Status = Status.Success; + } + catch + { + result.Status = Status.Error; + } + + return new JavaScriptSerializer().Serialize(result); + } + } + + result.Status = Status.NotSupported; + return new JavaScriptSerializer().Serialize(result); + } + } +} From 6afa6a277fc3de592a848ed9c599b04b9d675356 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 27 May 2013 07:40:29 -0200 Subject: [PATCH 4/5] Fixes U4-2263 unable to create or save stylesheet content --- .../umbraco/settings/stylesheet/editstylesheet.aspx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI/umbraco/settings/stylesheet/editstylesheet.aspx b/src/Umbraco.Web.UI/umbraco/settings/stylesheet/editstylesheet.aspx index 8907b64236..e380ac0c17 100644 --- a/src/Umbraco.Web.UI/umbraco/settings/stylesheet/editstylesheet.aspx +++ b/src/Umbraco.Web.UI/umbraco/settings/stylesheet/editstylesheet.aspx @@ -29,9 +29,8 @@ //bind save shortcut UmbClientMgr.appActions().bindSaveShortCut(); - }); - })(jQuery); - + })(jQuery); + From 7ccae64dd1f4ee5ae97aa797d70d737d6935c120 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 27 May 2013 08:19:20 -0200 Subject: [PATCH 5/5] Fix merge issue --- src/Umbraco.Web/Umbraco.Web.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 9c085ff540..544df3bfd0 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -1766,6 +1766,7 @@ +