diff --git a/src/Umbraco.Web/HttpRequestExtensions.cs b/src/Umbraco.Web/HttpRequestExtensions.cs
index b2746c563b..4dcdcb9c08 100644
--- a/src/Umbraco.Web/HttpRequestExtensions.cs
+++ b/src/Umbraco.Web/HttpRequestExtensions.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
@@ -35,5 +34,36 @@ namespace Umbraco.Web
return !val.IsNullOrWhiteSpace() ? val : string.Empty;
}
+ ///
+ /// Safely get the item from the query string and convert it to type 'T', otherwise will return default(T).
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static T GetItemAs(this HttpRequestBase request, string key)
+ {
+ var val = HttpContext.Current.Request[key];
+ var whitespaceCheck = !val.IsNullOrWhiteSpace() ? val : string.Empty;
+ if (whitespaceCheck.IsNullOrWhiteSpace())
+ return (T) typeof (T).GetDefaultValue();
+ var attempt = val.TryConvertTo();
+ if (attempt.Success)
+ return attempt.Result;
+ return (T)typeof(T).GetDefaultValue();
+ }
+
+ ///
+ /// Safely get the item from the query string and convert it to type 'T', otherwise will return default(T).
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static T GetItemAs(this HttpRequest request, string key)
+ {
+ return new HttpRequestWrapper(request).GetItemAs(key);
+ }
+
}
}
diff --git a/src/Umbraco.Web/UmbracoContext.cs b/src/Umbraco.Web/UmbracoContext.cs
index ed6855b3e2..eecfcc7ff4 100644
--- a/src/Umbraco.Web/UmbracoContext.cs
+++ b/src/Umbraco.Web/UmbracoContext.cs
@@ -49,6 +49,7 @@ namespace Umbraco.Web
if (applicationContext == null) throw new ArgumentNullException("applicationContext");
ObjectCreated = DateTime.Now;
+ UmbracoRequestId = Guid.NewGuid();
HttpContext = httpContext;
Application = applicationContext;
@@ -109,6 +110,11 @@ namespace Umbraco.Web
///
internal DateTime ObjectCreated { get; private set; }
+ ///
+ /// This is used internally for debugging and also used to define anything required to distinguish this request from another.
+ ///
+ internal Guid UmbracoRequestId { get; private set; }
+
///
/// Gets the current ApplicationContext
///
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 f9e9127325..ac154c71f6 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/legacyAjaxCalls.asmx.cs
@@ -16,8 +16,8 @@ using System.Text.RegularExpressions;
using System.Diagnostics;
using System.Net;
using System.Web.UI;
+using Umbraco.Core.IO;
using umbraco.businesslogic.Exceptions;
-using umbraco.IO;
using umbraco.cms.businesslogic.web;
using umbraco.cms.businesslogic.media;
using umbraco.BasePages;
@@ -205,15 +205,15 @@ namespace umbraco.presentation.webservices
switch (fileType)
{
case "xslt":
- return saveXslt(fileName, fileContents, ignoreDebug);
+ return SaveXslt(fileName, fileContents, ignoreDebug);
case "python":
return "true";
case "css":
- return saveCss(fileName, fileContents, fileID);
+ return SaveCss(fileName, fileContents, fileID);
case "script":
- return saveScript(fileName, fileContents);
+ return SaveScript(fileName, fileContents);
case "template":
- return saveTemplate(fileName, fileAlias, fileContents, fileID, masterID);
+ return SaveTemplate(fileName, fileAlias, fileContents, fileID, masterID);
default:
throw new ArgumentException(String.Format("Invalid fileType passed: '{0}'", fileType));
}
@@ -228,38 +228,34 @@ namespace umbraco.presentation.webservices
}
- private string saveCss(string fileName, string fileContents, int fileID)
+ private static string SaveCss(string fileName, string fileContents, int fileID)
{
- string returnValue = "false";
- cms.businesslogic.web.StyleSheet stylesheet = new cms.businesslogic.web.StyleSheet(fileID);
+ string returnValue;
+ var stylesheet = new StyleSheet(fileID) {Content = fileContents, Text = fileName};
- if (stylesheet != null)
- {
- stylesheet.Content = fileContents;
- stylesheet.Text = fileName;
- try
- {
- stylesheet.saveCssToFile();
- returnValue = "true";
- }
- catch (Exception ee)
- {
- throw new Exception("Couldn't save file", ee);
- }
+ try
+ {
+ stylesheet.saveCssToFile();
+ returnValue = "true";
+ }
+ catch (Exception ee)
+ {
+ throw new Exception("Couldn't save file", ee);
+ }
- //this.speechBubble(speechBubbleIcon.save, ui.Text("speechBubbles", "editStylesheetSaved", base.getUser()), "");
- }
- return returnValue;
+ //this.speechBubble(speechBubbleIcon.save, ui.Text("speechBubbles", "editStylesheetSaved", base.getUser()), "");
+ return returnValue;
}
- private string saveXslt(string fileName, string fileContents, bool ignoreDebugging)
- {
- StreamWriter SW;
- string tempFileName = IOHelper.MapPath(SystemDirectories.Xslt + "/" + System.DateTime.Now.Ticks + "_temp.xslt");
- SW = File.CreateText(tempFileName);
- SW.Write(fileContents);
- SW.Close();
-
+ private string SaveXslt(string fileName, string fileContents, bool ignoreDebugging)
+ {
+ var tempFileName = IOHelper.MapPath(SystemDirectories.Xslt + "/" + System.DateTime.Now.Ticks + "_temp.xslt");
+ using (var sw = File.CreateText(tempFileName))
+ {
+ sw.Write(fileContents);
+ sw.Close();
+ }
+
// Test the xslt
string errorMessage = "";
if (!ignoreDebugging)
@@ -363,13 +359,15 @@ namespace umbraco.presentation.webservices
if (errorMessage == "" && fileName.ToLower().EndsWith(".xslt"))
{
//Hardcoded security-check... only allow saving files in xslt directory...
- string savePath = IOHelper.MapPath(SystemDirectories.Xslt + "/" + fileName);
+ var savePath = IOHelper.MapPath(SystemDirectories.Xslt + "/" + fileName);
if (savePath.StartsWith(IOHelper.MapPath(SystemDirectories.Xslt)))
{
- SW = File.CreateText(savePath);
- SW.Write(fileContents);
- SW.Close();
+ using (var sw = File.CreateText(savePath))
+ {
+ sw.Write(fileContents);
+ sw.Close();
+ }
errorMessage = "true";
}
else
@@ -378,26 +376,19 @@ namespace umbraco.presentation.webservices
}
}
- System.IO.File.Delete(tempFileName);
+ File.Delete(tempFileName);
return errorMessage;
}
-
- private string savePython(string filename, string contents)
+
+ private static string SaveScript(string filename, string contents)
{
-
-
- return "true";
- }
-
- private string saveScript(string filename, string contents)
- {
- string val = contents;
- string returnValue = "false";
+ var val = contents;
+ string returnValue;
try
{
- string savePath = IOHelper.MapPath(SystemDirectories.Scripts + "/" + filename);
+ var savePath = IOHelper.MapPath(SystemDirectories.Scripts + "/" + filename);
//Directory check.. only allow files in script dir and below to be edited
if (savePath.StartsWith(IOHelper.MapPath(SystemDirectories.Scripts + "/")))
@@ -422,34 +413,28 @@ namespace umbraco.presentation.webservices
return returnValue;
}
- private string saveTemplate(string templateName, string templateAlias, string templateContents, int templateID, int masterTemplateID)
+ private static string SaveTemplate(string templateName, string templateAlias, string templateContents, int templateID, int masterTemplateID)
{
+ var tp = new cms.businesslogic.template.Template(templateID);
+ var retVal = "false";
- cms.businesslogic.template.Template _template = new global::umbraco.cms.businesslogic.template.Template(templateID);
- string retVal = "false";
+ tp.Text = templateName;
+ tp.Alias = templateAlias;
+ tp.MasterTemplate = masterTemplateID;
+ tp.Design = templateContents;
- if (_template != null)
- {
- _template.Text = templateName;
- _template.Alias = templateAlias;
- _template.MasterTemplate = masterTemplateID;
- _template.Design = templateContents;
+ retVal = "true";
- retVal = "true";
-
- // Clear cache in rutime
- if (UmbracoSettings.UseDistributedCalls)
- cache.dispatcher.Refresh(
- new Guid("dd12b6a0-14b9-46e8-8800-c154f74047c8"),
- _template.Id);
- else
- template.ClearCachedTemplate(_template.Id);
- }
- else
- return "false";
+ // Clear cache in rutime
+ if (UmbracoSettings.UseDistributedCalls)
+ cache.dispatcher.Refresh(
+ new Guid("dd12b6a0-14b9-46e8-8800-c154f74047c8"),
+ tp.Id);
+ else
+ template.ClearCachedTemplate(tp.Id);
- return retVal;
+ return retVal;
}