Applies patch for #U4-497 for getting exceptions for xslt
This commit is contained in:
@@ -469,7 +469,7 @@ namespace umbraco
|
||||
break;
|
||||
}
|
||||
case (int)MacroTypes.XSLT:
|
||||
macroControl = loadMacroXSLT(this, Model, pageElements);
|
||||
macroControl = LoadMacroXslt(this, Model, pageElements, true);
|
||||
break;
|
||||
case (int)MacroTypes.Script:
|
||||
|
||||
@@ -774,21 +774,20 @@ namespace umbraco
|
||||
return retval;
|
||||
}
|
||||
|
||||
public Control loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)
|
||||
internal Control LoadMacroXslt(macro macro, MacroModel model, Hashtable pageElements, bool throwError)
|
||||
{
|
||||
if (XsltFile.Trim() != string.Empty)
|
||||
{
|
||||
// Get main XML
|
||||
XmlDocument umbracoXML = content.Instance.XmlContent;
|
||||
var umbracoXml = content.Instance.XmlContent;
|
||||
|
||||
// Create XML document for Macro
|
||||
var macroXML = new XmlDocument();
|
||||
macroXML.LoadXml("<macro/>");
|
||||
var macroXml = new XmlDocument();
|
||||
macroXml.LoadXml("<macro/>");
|
||||
|
||||
foreach (MacroPropertyModel prop in macro.Model.Properties)
|
||||
foreach (var prop in macro.Model.Properties)
|
||||
{
|
||||
addMacroXmlNode(umbracoXML, macroXML, prop.Key, prop.Type,
|
||||
prop.Value);
|
||||
addMacroXmlNode(umbracoXml, macroXml, prop.Key, prop.Type, prop.Value);
|
||||
}
|
||||
|
||||
if (HttpContext.Current.Request.QueryString["umbDebug"] != null && GlobalSettings.DebugMode)
|
||||
@@ -796,7 +795,7 @@ namespace umbraco
|
||||
return
|
||||
new LiteralControl("<div style=\"border: 2px solid green; padding: 5px;\"><b>Debug from " +
|
||||
macro.Name +
|
||||
"</b><br/><p>" + HttpContext.Current.Server.HtmlEncode(macroXML.OuterXml) +
|
||||
"</b><br/><p>" + HttpContext.Current.Server.HtmlEncode(macroXml.OuterXml) +
|
||||
"</p></div>");
|
||||
}
|
||||
|
||||
@@ -806,7 +805,7 @@ namespace umbraco
|
||||
|
||||
try
|
||||
{
|
||||
Control result = CreateControlsFromText(GetXsltTransformResult(macroXML, xsltFile));
|
||||
var result = CreateControlsFromText(GetXsltTransformResult(macroXml, xsltFile));
|
||||
|
||||
TraceInfo("umbracoMacro", "After performing transformation");
|
||||
|
||||
@@ -824,18 +823,32 @@ namespace umbraco
|
||||
ie = ie.InnerException;
|
||||
}
|
||||
|
||||
var macroErrorEventArgs = new MacroErrorEventArgs {Name = Model.Name, Alias = Model.Alias, ItemKey = Model.Xslt, Exception = e, Behaviour = UmbracoSettings.MacroErrorBehaviour};
|
||||
return GetControlForErrorBehavior("Error parsing XSLT file: \\xslt\\" + XsltFile, macroErrorEventArgs);
|
||||
var macroErrorEventArgs = new MacroErrorEventArgs { Name = Model.Name, Alias = Model.Alias, ItemKey = Model.Xslt, Exception = e, Behaviour = UmbracoSettings.MacroErrorBehaviour };
|
||||
var macroControl = GetControlForErrorBehavior("Error parsing XSLT file: \\xslt\\" + XsltFile, macroErrorEventArgs);
|
||||
//if it is null, then we are supposed to throw the (original) exception
|
||||
// see: http://issues.umbraco.org/issue/U4-497 at the end
|
||||
if (macroControl == null && throwError)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
return macroControl;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Exceptions.Add(e);
|
||||
LogHelper.WarnWithException<macro>("Error loading XSLT " + Model.Xslt, true, e);
|
||||
|
||||
|
||||
// Invoke any error handlers for this macro
|
||||
var macroErrorEventArgs = new MacroErrorEventArgs {Name = Model.Name, Alias = Model.Alias, ItemKey = Model.Xslt, Exception = e, Behaviour = UmbracoSettings.MacroErrorBehaviour};
|
||||
return GetControlForErrorBehavior("Error reading XSLT file: \\xslt\\" + XsltFile, macroErrorEventArgs);
|
||||
var macroErrorEventArgs = new MacroErrorEventArgs { Name = Model.Name, Alias = Model.Alias, ItemKey = Model.Xslt, Exception = e, Behaviour = UmbracoSettings.MacroErrorBehaviour };
|
||||
var macroControl = GetControlForErrorBehavior("Error reading XSLT file: \\xslt\\" + XsltFile, macroErrorEventArgs);
|
||||
//if it is null, then we are supposed to throw the (original) exception
|
||||
// see: http://issues.umbraco.org/issue/U4-497 at the end
|
||||
if (macroControl == null && throwError)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
return macroControl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -843,6 +856,11 @@ namespace umbraco
|
||||
return new LiteralControl(string.Empty);
|
||||
}
|
||||
|
||||
public Control loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)
|
||||
{
|
||||
return LoadMacroXslt(macro, model, pageElements, false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parses the text for umbraco Item controls that need to be rendered.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user