diff --git a/README.md b/README.md
index 5e7cb63499..f842afd3c2 100644
--- a/README.md
+++ b/README.md
@@ -6,18 +6,27 @@ Umbraco CMS
## Umbraco - the simple, flexible and friendly ASP.NET CMS ##
-**More than 155,000 sites trust Umbraco**
-For the first time on the Microsoft platform a free user and developer friendly cms that makes it quick and easy to create websites - or a breeze to build complex web applications. umbraco got award-winning integration capabilities and supports your ASP.NET User and Custom Controls out of the box. It's a developers dream and your users will love it too. Used by more than 110,000 active websites including [http://daviscup.com](http://daviscup.com), [http://heinz.com](http://heinz.com), [http://peugeot.com](http://peugeot.com), [http://www.hersheys.com/](http://www.hersheys.com/) and **The Official ASP.NET and IIS.NET website from Microsoft** ([http://asp.net](http://asp.net) / [http://iis.net](http://iis.net)) you can be sure that the technology is proven, stable and scales.
-[More info at http://umbraco.org](http://umbraco.org)
+**More than 177,000 sites trust Umbraco**
+
+For the first time on the Microsoft platform a free user and developer friendly CMS that makes it quick and easy to create websites - or a breeze to build complex web applications. Umbraco has award-winning integration capabilities and supports your ASP.NET User and Custom Controls out of the box. It's a developers dream and your users will love it too.
+
+Used by more than 177,000 active websites including [http://daviscup.com](http://daviscup.com), [http://heinz.com](http://heinz.com), [http://peugeot.com](http://peugeot.com), [http://www.hersheys.com/](http://www.hersheys.com/) and **The Official ASP.NET and IIS.NET website from Microsoft** ([http://asp.net](http://asp.net) / [http://iis.net](http://iis.net)) you can be sure that the technology is proven, stable and scales.
+
+To view more examples please visit [http://umbraco.com/why-umbraco/#caseStudies](http://umbraco.com/why-umbraco/#caseStudies)
+
+## Downloading ##
+
+The downloadable Umbraco releases live at [http://our.umbraco.org/contribute/releases](http://our.umbraco.org/contribute/releases).
## Forums ##
-We have a forum running on [http://our.umbraco.org](http://our.umbraco.org). The discussions area on CodePlex will be for discussions on developing the core, and not on Umbraco-implementations or extensions in general. For those topics, please use [http://our.umbraco.org](http://our.umbraco.org).
+
+We have a forum running on [http://our.umbraco.org](http://our.umbraco.org). The discussions group on [Google Groups](https://groups.google.com/forum/#!forum/umbraco-dev) is for discussions on developing the core, and not on Umbraco-implementations or extensions in general. For those topics, please use [http://our.umbraco.org](http://our.umbraco.org).
## Contribute to Umbraco ##
If you want to contribute back to Umbraco you should check out our [guide to contributing](http://our.umbraco.org/contribute).
-## Submitting Issues ##
+## Found a bug? ##
Another way you can contribute to Umbraco is by providing issue reports, for information on how to submit an issue report refer to our [online guide for reporting issues](http://our.umbraco.org/contribute/report-an-issue-or-request-a-feature).
diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs
index 517479e893..8eb3f54023 100644
--- a/src/Umbraco.Core/Services/ContentService.cs
+++ b/src/Umbraco.Core/Services/ContentService.cs
@@ -952,7 +952,10 @@ namespace Umbraco.Core.Services
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentRepository(uow))
{
- content.WriterId = userId;
+ // Update the create author and last edit author
+ copy.CreatorId = userId;
+ copy.WriterId = userId;
+
repository.AddOrUpdate(copy);
uow.Commit();
diff --git a/src/Umbraco.Web/umbraco.presentation/macro.cs b/src/Umbraco.Web/umbraco.presentation/macro.cs
index 2f4bdf9820..aea5e4de03 100644
--- a/src/Umbraco.Web/umbraco.presentation/macro.cs
+++ b/src/Umbraco.Web/umbraco.presentation/macro.cs
@@ -31,6 +31,7 @@ using umbraco.NodeFactory;
using umbraco.presentation.templateControls;
using Content = umbraco.cms.businesslogic.Content;
using Macro = umbraco.cms.businesslogic.macro.Macro;
+using MacroErrorEventArgs = Umbraco.Core.Events.MacroErrorEventArgs;
namespace umbraco
{
diff --git a/src/umbraco.cms/businesslogic/events/EventArgs.cs b/src/umbraco.cms/businesslogic/events/EventArgs.cs
index 09836a8101..1329e9c6b2 100644
--- a/src/umbraco.cms/businesslogic/events/EventArgs.cs
+++ b/src/umbraco.cms/businesslogic/events/EventArgs.cs
@@ -63,5 +63,36 @@ namespace umbraco.cms.businesslogic {
public bool CancelChildren { get; set; }
}
-
+
+ // Provides information on the macro that caused an error
+ public class MacroErrorEventArgs : System.EventArgs
+ {
+ ///
+ /// Name of the faulting macro.
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// Alias of the faulting macro.
+ ///
+ public string Alias { get; set; }
+
+ ///
+ /// Filename of the faulting macro.
+ ///
+ public string File { get; set; }
+
+ ///
+ /// Exception raised.
+ ///
+ public Exception Exception { get; set; }
+
+ ///
+ /// Gets or sets the desired behaviour when a matching macro causes an error. See
+ /// for definitions. By setting this in your event
+ /// you can override the default behaviour defined in UmbracoSettings.config.
+ ///
+ /// Macro error behaviour enum.
+ public MacroErrorBehaviour Behaviour { get; set; }
+ }
}
diff --git a/src/umbraco.cms/businesslogic/member/Member.cs b/src/umbraco.cms/businesslogic/member/Member.cs
index 918327564d..1668f490aa 100644
--- a/src/umbraco.cms/businesslogic/member/Member.cs
+++ b/src/umbraco.cms/businesslogic/member/Member.cs
@@ -91,7 +91,7 @@ namespace umbraco.cms.businesslogic.member
///
/// Note: is ressource intensive, use with care.
///
- [Obsolete("Use System.Web.Security.Membership.GetAllUsers()")]
+
public static Member[] GetAll
{
get
@@ -146,13 +146,13 @@ namespace umbraco.cms.businesslogic.member
///
/// The first letter
///
- [Obsolete("Use System.Web.Security.Membership.FindUsersByName(string letter)")]
+
public static Member[] getMemberFromFirstLetter(char letter)
{
return GetMemberByName(letter.ToString(), true);
}
- [Obsolete("Use System.Web.Security.Membership.FindUsersByName(string letter)")]
+
public static Member[] GetMemberByName(string usernameToMatch, bool matchByNameInsteadOfLogin)
{
string field = matchByNameInsteadOfLogin ? "umbracoNode.text" : "cmsMember.loginName";
@@ -184,7 +184,7 @@ namespace umbraco.cms.businesslogic.member
/// Member type
/// The umbraco usercontext
/// The new member
- [Obsolete("Use System.Web.Security.Membership.CreateUser")]
+
public static Member MakeNew(string Name, MemberType mbt, User u)
{
return MakeNew(Name, "", "", mbt, u);
@@ -199,7 +199,7 @@ namespace umbraco.cms.businesslogic.member
/// The umbraco usercontext
/// The email of the user
/// The new member
- [Obsolete("Use System.Web.Security.Membership.CreateUser")]
+
public static Member MakeNew(string Name, string Email, MemberType mbt, User u)
{
return MakeNew(Name, "", Email, mbt, u);
@@ -213,7 +213,7 @@ namespace umbraco.cms.businesslogic.member
/// The umbraco usercontext
/// The email of the user
/// The new member
- [Obsolete("Use System.Web.Security.Membership.CreateUser")]
+
public static Member MakeNew(string Name, string LoginName, string Email, MemberType mbt, User u)
{
var loginName = (!String.IsNullOrEmpty(LoginName)) ? LoginName : Name;
@@ -265,7 +265,7 @@ namespace umbraco.cms.businesslogic.member
///
/// The unique Loginname
/// The member with the specified loginname - null if no Member with the login exists
- [Obsolete("Use System.Web.Security.Membership.GetUser")]
+
public static Member GetMemberFromLoginName(string loginName)
{
if (String.IsNullOrEmpty(loginName))
@@ -298,7 +298,7 @@ namespace umbraco.cms.businesslogic.member
///
/// The email of the member
/// The member with the specified email - null if no Member with the email exists
- [Obsolete("Use System.Web.Security.Membership.GetUserNameByEmail")]
+
public static Member GetMemberFromEmail(string email)
{
if (string.IsNullOrEmpty(email))
@@ -326,7 +326,7 @@ namespace umbraco.cms.businesslogic.member
/// Member login
/// Member password
/// The member with the credentials - null if none exists
- [Obsolete("Log members in via the standard Forms Authentiaction login")]
+
public static Member GetMemberFromLoginNameAndPassword(string loginName, string password)
{
if (IsMember(loginName))
@@ -668,7 +668,7 @@ namespace umbraco.cms.businesslogic.member
///
/// Deltes the current member
///
- [Obsolete("Use System.Web.Security.Membership.DeleteUser")]
+
public override void delete()
{
DeleteEventArgs e = new DeleteEventArgs();
@@ -712,7 +712,7 @@ namespace umbraco.cms.businesslogic.member
///
/// The id of the group which the member is being added to
[MethodImpl(MethodImplOptions.Synchronized)]
- [Obsolete("Use System.Web.Security.Roles.AddUserToRole")]
+
public void AddGroup(int GroupId)
{
AddGroupEventArgs e = new AddGroupEventArgs();
@@ -738,7 +738,7 @@ namespace umbraco.cms.businesslogic.member
/// Removes the member from the MemberGroup specified
///
/// The MemberGroup from which the Member is removed
- [Obsolete("Use System.Web.Security.Roles.RemoveUserFromRole")]
+
public void RemoveGroup(int GroupId)
{
RemoveGroupEventArgs e = new RemoveGroupEventArgs();