diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs
index 15e8d5b99b..29f3f26a81 100644
--- a/src/Umbraco.Core/Models/ContentExtensions.cs
+++ b/src/Umbraco.Core/Models/ContentExtensions.cs
@@ -16,6 +16,7 @@ using Umbraco.Core.Models.Membership;
using Umbraco.Core.Strings;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.UnitOfWork;
+using Umbraco.Core.Services;
namespace Umbraco.Core.Models
{
@@ -105,6 +106,50 @@ namespace Umbraco.Core.Models
}
#endregion
+ ///
+ /// Checks if the IContentBase has children
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// This is a bit of a hack because we need to type check!
+ ///
+ internal static bool HasChildren(IContentBase content, ServiceContext services)
+ {
+ if (content is IContent)
+ {
+ return services.ContentService.HasChildren(content.Id);
+ }
+ if (content is IMedia)
+ {
+ return services.MediaService.HasChildren(content.Id);
+ }
+ return false;
+ }
+
+ ///
+ /// Returns the children for the content base item
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// This is a bit of a hack because we need to type check!
+ ///
+ internal static IEnumerable Children(IContentBase content, ServiceContext services)
+ {
+ if (content is IContent)
+ {
+ return services.ContentService.GetChildren(content.Id);
+ }
+ if (content is IMedia)
+ {
+ return services.MediaService.GetChildren(content.Id);
+ }
+ return null;
+ }
+
///
/// Set property values by alias with an annonymous object
///
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index d46e282b1e..c5535f385d 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -772,7 +772,6 @@
-
diff --git a/src/Umbraco.Core/Xml/XmlNodeExtensions.cs b/src/Umbraco.Core/Xml/XmlNodeExtensions.cs
deleted file mode 100644
index 1af6ee0983..0000000000
--- a/src/Umbraco.Core/Xml/XmlNodeExtensions.cs
+++ /dev/null
@@ -1,169 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Xml;
-using System.Xml.XPath;
-
-// source: mvpxml.codeplex.com
-
-namespace Umbraco.Core.Xml
-{
- ///
- /// Provides extensions to XmlNode.
- ///
- internal static class XmlNodeExtensions
- {
- ///
- /// Selects a list of XmlNode matching an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The list of XmlNode matching the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNodeList SelectNodes(this XmlNode source, string expression, IEnumerable variables)
- {
- var av = variables == null ? null : variables.ToArray();
- return SelectNodes(source, expression, av);
- }
-
- ///
- /// Selects a list of XmlNode matching an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The list of XmlNode matching the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNodeList SelectNodes(this XmlNode source, XPathExpression expression, IEnumerable variables)
- {
- var av = variables == null ? null : variables.ToArray();
- return SelectNodes(source, expression, av);
- }
-
- ///
- /// Selects a list of XmlNode matching an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The list of XmlNode matching the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNodeList SelectNodes(this XmlNode source, string expression, params XPathVariable[] variables)
- {
- if (variables == null || variables.Length == 0 || variables[0] == null)
- return source.SelectNodes(expression);
-
- var iterator = source.CreateNavigator().Select(expression, variables);
- return XmlNodeListFactory.CreateNodeList(iterator);
- }
-
- ///
- /// Selects a list of XmlNode matching an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The list of XmlNode matching the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNodeList SelectNodes(this XmlNode source, XPathExpression expression, params XPathVariable[] variables)
- {
- if (variables == null || variables.Length == 0 || variables[0] == null)
- return source.SelectNodes(expression);
-
- var iterator = source.CreateNavigator().Select(expression, variables);
- return XmlNodeListFactory.CreateNodeList(iterator);
- }
-
- ///
- /// Selects the first XmlNode that matches an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The first XmlNode that matches the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNode SelectSingleNode(this XmlNode source, string expression, IEnumerable variables)
- {
- var av = variables == null ? null : variables.ToArray();
- return SelectSingleNode(source, expression, av);
- }
-
- ///
- /// Selects the first XmlNode that matches an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The first XmlNode that matches the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNode SelectSingleNode(this XmlNode source, XPathExpression expression, IEnumerable variables)
- {
- var av = variables == null ? null : variables.ToArray();
- return SelectSingleNode(source, expression, av);
- }
-
- ///
- /// Selects the first XmlNode that matches an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The first XmlNode that matches the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNode SelectSingleNode(this XmlNode source, string expression, params XPathVariable[] variables)
- {
- if (variables == null || variables.Length == 0 || variables[0] == null)
- return source.SelectSingleNode(expression);
-
- return SelectNodes(source, expression, variables).Cast().FirstOrDefault();
- }
-
- ///
- /// Selects the first XmlNode that matches an XPath expression.
- ///
- /// A source XmlNode.
- /// An XPath expression.
- /// A set of XPathVariables.
- /// The first XmlNode that matches the XPath expression.
- ///
- /// If is null, or is empty, or contains only one single
- /// value which itself is null, then variables are ignored.
- /// The XPath expression should reference variables as $var.
- ///
- public static XmlNode SelectSingleNode(this XmlNode source, XPathExpression expression, params XPathVariable[] variables)
- {
- if (variables == null || variables.Length == 0 || variables[0] == null)
- return source.SelectSingleNode(expression);
-
- return SelectNodes(source, expression, variables).Cast().FirstOrDefault();
- }
- }
-}
diff --git a/src/Umbraco.Core/XmlExtensions.cs b/src/Umbraco.Core/XmlExtensions.cs
index fee2aba0e5..ec53f0521a 100644
--- a/src/Umbraco.Core/XmlExtensions.cs
+++ b/src/Umbraco.Core/XmlExtensions.cs
@@ -1,6 +1,10 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
using System.Xml;
using System.Xml.Linq;
+using System.Xml.XPath;
+using Umbraco.Core.Xml;
namespace Umbraco.Core
{
@@ -9,6 +13,45 @@ namespace Umbraco.Core
///
internal static class XmlExtensions
{
+ static XPathNodeIterator Select(string expression, XPathNavigator source, params XPathVariable[] variables)
+ {
+ var expr = source.Compile(expression);
+ var context = new DynamicContext();
+ foreach (var variable in variables)
+ context.AddVariable(variable.Name, variable.Value);
+ expr.SetContext(context);
+ return source.Select(expr);
+ }
+
+ public static XmlNodeList SelectNodes(this XmlNode source, string expression, IEnumerable variables)
+ {
+ var av = variables == null ? null : variables.ToArray();
+ return SelectNodes(source, expression, av);
+ }
+
+ public static XmlNodeList SelectNodes(this XmlNode source, string expression, params XPathVariable[] variables)
+ {
+ if (variables == null || variables.Length == 0 || variables[0] == null)
+ return source.SelectNodes(expression);
+
+ var iterator = Select(expression, source.CreateNavigator(), variables);
+ return XmlNodeListFactory.CreateNodeList(iterator);
+ }
+
+ public static XmlNode SelectSingleNode(this XmlNode source, string expression, IEnumerable variables)
+ {
+ var av = variables == null ? null : variables.ToArray();
+ return SelectSingleNode(source, expression, av);
+ }
+
+ public static XmlNode SelectSingleNode(this XmlNode source, string expression, params XPathVariable[] variables)
+ {
+ if (variables == null || variables.Length == 0 || variables[0] == null)
+ return source.SelectSingleNode(expression);
+
+ return SelectNodes(source, expression, variables).Cast().FirstOrDefault();
+ }
+
///
/// Converts from an XDocument to an XmlDocument
///
diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
index 3e3540af1f..dcd442c727 100644
--- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
+++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
@@ -451,6 +451,13 @@
EditMacro.aspxASPXCodeBehind
+
+ moveOrCopy.aspx
+ ASPXCodeBehind
+
+
+ moveOrCopy.aspx
+ sort.aspxASPXCodeBehind
diff --git a/src/Umbraco.Web.UI/config/ClientDependency.config b/src/Umbraco.Web.UI/config/ClientDependency.config
index e71cef5626..4c003050b6 100644
--- a/src/Umbraco.Web.UI/config/ClientDependency.config
+++ b/src/Umbraco.Web.UI/config/ClientDependency.config
@@ -10,7 +10,7 @@ NOTES:
* Compression/Combination/Minification is not enabled unless debug="false" is specified on the 'compiliation' element in the web.config
* A new version will invalidate both client and server cache and create new persisted files
-->
-
+
diff --git a/src/Umbraco.Web.UI/umbraco/dialogs/MoveOrCopy.aspx.cs b/src/Umbraco.Web.UI/umbraco/dialogs/MoveOrCopy.aspx.cs
new file mode 100644
index 0000000000..b5af29be21
--- /dev/null
+++ b/src/Umbraco.Web.UI/umbraco/dialogs/MoveOrCopy.aspx.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace Umbraco.Web.UI.Umbraco.Dialogs
+{
+ public partial class MoveOrCopy : global::umbraco.dialogs.moveOrCopy
+ {
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI/umbraco/dialogs/MoveOrCopy.aspx.designer.cs b/src/Umbraco.Web.UI/umbraco/dialogs/MoveOrCopy.aspx.designer.cs
new file mode 100644
index 0000000000..7b00ec6d41
--- /dev/null
+++ b/src/Umbraco.Web.UI/umbraco/dialogs/MoveOrCopy.aspx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Umbraco.Web.UI.Umbraco.Dialogs {
+
+
+ public partial class MoveOrCopy {
+ }
+}
diff --git a/src/Umbraco.Web.UI/umbraco/dialogs/moveOrCopy.aspx b/src/Umbraco.Web.UI/umbraco/dialogs/moveOrCopy.aspx
index 219b46d688..ea5cef2a8a 100644
--- a/src/Umbraco.Web.UI/umbraco/dialogs/moveOrCopy.aspx
+++ b/src/Umbraco.Web.UI/umbraco/dialogs/moveOrCopy.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="c#" CodeBehind="moveOrCopy.aspx.cs" MasterPageFile="../masterpages/umbracoDialog.Master" AutoEventWireup="True" Inherits="umbraco.dialogs.moveOrCopy" %>
+<%@ Page Language="c#" CodeBehind="moveOrCopy.aspx.cs" MasterPageFile="../masterpages/umbracoDialog.Master" AutoEventWireup="True" Inherits="Umbraco.Web.UI.Umbraco.Dialogs.MoveOrCopy" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<%@ Register Src="../controls/Tree/TreeControl.ascx" TagName="TreeControl" TagPrefix="umbraco" %>
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 1149d70772..84c3a4a92f 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -510,6 +510,9 @@
ASPXCodeBehind
+
+ ASPXCodeBehind
+ ASPXCodeBehind
@@ -1285,13 +1288,6 @@
insertTable.aspx
-
- moveOrCopy.aspx
- ASPXCodeBehind
-
-
- moveOrCopy.aspx
- notifications.aspxASPXCodeBehind
@@ -1873,7 +1869,6 @@
-
diff --git a/src/Umbraco.Web/umbraco.presentation/content.cs b/src/Umbraco.Web/umbraco.presentation/content.cs
index bc053538f6..9270e57cc0 100644
--- a/src/Umbraco.Web/umbraco.presentation/content.cs
+++ b/src/Umbraco.Web/umbraco.presentation/content.cs
@@ -406,7 +406,24 @@ namespace umbraco
}
else
{
+ //check the current parent id
+ var currParentId = currentNode.AttributeValue("parentID");
+
+ //update the node with it's new values
TransferValuesFromDocumentXmlToPublishedXml(docNode, currentNode);
+
+ //If the node is being moved we also need to ensure that it exists under the new parent!
+ // http://issues.umbraco.org/issue/U4-2312
+ // we were never checking this before and instead simply changing the parentId value but not
+ // changing the actual parent.
+
+ //check the new parent
+ if (currParentId != currentNode.AttributeValue("parentID"))
+ {
+ //ok, we've actually got to move the node
+ parentNode.AppendChild(currentNode);
+ }
+
}
// TODO: Update with new schema!
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/moveOrCopy.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/moveOrCopy.aspx
deleted file mode 100644
index 219b46d688..0000000000
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/moveOrCopy.aspx
+++ /dev/null
@@ -1,91 +0,0 @@
-<%@ Page Language="c#" CodeBehind="moveOrCopy.aspx.cs" MasterPageFile="../masterpages/umbracoDialog.Master" AutoEventWireup="True" Inherits="umbraco.dialogs.moveOrCopy" %>
-<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
-<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
-<%@ Register Src="../controls/Tree/TreeControl.ascx" TagName="TreeControl" TagPrefix="umbraco" %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
" + ui.Text("closeThisWindow") + "";
+ //NOTE: We ONLY support Copy on content not media for some reason.
+
+ Services.ContentService.Copy((IContent)currContent, Request.GetItemAs("copyTo"), RelateDocuments.Checked, getUser().Id);
+
+ feedback.Text = ui.Text("moveOrCopy", "copyDone", nodes, getUser()) + "
" + ui.Text("closeThisWindow") + "";
feedback.type = uicontrols.Feedback.feedbacktype.success;
- ClientTools.CopyNode(currentNode.Id.ToString(), newNode.Path);
+
+ // refresh tree
+ ClientTools.CopyNode(currContent.Id.ToString(), parentContent.Path);
}
}
}
}
+ ///
+ /// JsInclude1 control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::ClientDependency.Core.Controls.JsInclude JsInclude1;
+
+ ///
+ /// feedback control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::umbraco.uicontrols.Feedback feedback;
+
+ ///
+ /// pane_form control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::umbraco.uicontrols.Pane pane_form;
+
+ ///
+ /// JTree control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::umbraco.controls.Tree.TreeControl JTree;
+
+ ///
+ /// pp_relate control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::umbraco.uicontrols.PropertyPanel pp_relate;
+
+ ///
+ /// RelateDocuments control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.CheckBox RelateDocuments;
+
+ ///
+ /// pane_form_notice control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.PlaceHolder pane_form_notice;
+
+ ///
+ /// pane_settings control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::umbraco.uicontrols.Pane pane_settings;
+
+ ///
+ /// PropertyPanel1 control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::umbraco.uicontrols.PropertyPanel PropertyPanel1;
+
+ ///
+ /// masterType control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.ListBox masterType;
+
+ ///
+ /// rename control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox rename;
+
+ ///
+ /// RequiredFieldValidator1 control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
+
+ ///
+ /// panel_buttons control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Panel panel_buttons;
+
+ ///
+ /// ok control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Button ok;
+
}
}
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/moveOrCopy.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/moveOrCopy.aspx.designer.cs
deleted file mode 100644
index f7c669d1ea..0000000000
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/moveOrCopy.aspx.designer.cs
+++ /dev/null
@@ -1,141 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace umbraco.dialogs {
-
-
- public partial class moveOrCopy {
-
- ///
- /// JsInclude1 control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::ClientDependency.Core.Controls.JsInclude JsInclude1;
-
- ///
- /// feedback control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::umbraco.uicontrols.Feedback feedback;
-
- ///
- /// pane_form control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::umbraco.uicontrols.Pane pane_form;
-
- ///
- /// JTree control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::umbraco.controls.Tree.TreeControl JTree;
-
- ///
- /// pp_relate control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::umbraco.uicontrols.PropertyPanel pp_relate;
-
- ///
- /// RelateDocuments control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.CheckBox RelateDocuments;
-
- ///
- /// pane_form_notice control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.PlaceHolder pane_form_notice;
-
- ///
- /// pane_settings control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::umbraco.uicontrols.Pane pane_settings;
-
- ///
- /// PropertyPanel1 control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::umbraco.uicontrols.PropertyPanel PropertyPanel1;
-
- ///
- /// masterType control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.ListBox masterType;
-
- ///
- /// rename control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.TextBox rename;
-
- ///
- /// RequiredFieldValidator1 control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
-
- ///
- /// panel_buttons control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.Panel panel_buttons;
-
- ///
- /// ok control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.Button ok;
- }
-}
diff --git a/src/umbraco.businesslogic/BasePages/BasePage.cs b/src/umbraco.businesslogic/BasePages/BasePage.cs
index e44a92c30b..ba48699705 100644
--- a/src/umbraco.businesslogic/BasePages/BasePage.cs
+++ b/src/umbraco.businesslogic/BasePages/BasePage.cs
@@ -82,6 +82,30 @@ namespace umbraco.BasePages
get { return ApplicationContext.DatabaseContext; }
}
+ ///
+ /// Returns the current ApplicationContext
+ ///
+ public ApplicationContext ApplicationContext
+ {
+ get { return ApplicationContext.Current; }
+ }
+
+ ///
+ /// Returns a ServiceContext
+ ///
+ public ServiceContext Services
+ {
+ get { return ApplicationContext.Services; }
+ }
+
+ ///
+ /// Returns a DatabaseContext
+ ///
+ public DatabaseContext DatabaseContext
+ {
+ get { return ApplicationContext.DatabaseContext; }
+ }
+
///
/// Returns the current BasePage for the current request.
/// This assumes that the current page is a BasePage, otherwise, returns null;