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 {
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);
+
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('
');
$('#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 348dae2dfa..8e3e50c8d2 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -1768,6 +1768,7 @@
+
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);
+ }
+ }
+}
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 15c573aff4..6e1381152e 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs
@@ -166,6 +166,8 @@ namespace umbraco.presentation.webservices
[ScriptMethod]
public string ProgressStatus(string Key)
{
+ AuthorizeRequest(true);
+
return Application[helper.Request("key")].ToString();
}