private ActionResult UserProfile(int userId, bool editMode = false) { var result = new ControlFormResult { UpdateActionName = "UpdateProfile", SubmitButtonText = T("Save").Text, ReadOnly = !editMode }; string title; bool onlyPublicProperties = false; if (editMode) { if (userId == WorkContext.CurrentUser.Id) { title = T("Edit My Profile"); } else if (WorkContext.CurrentUser.SuperUser || CheckPermission(StandardPermissions.FullAccess)) { title = T("Edit Profile"); } else { return(new HttpUnauthorizedResult()); } } else { if (userId == WorkContext.CurrentUser.Id) { title = T("My Profile"); result.AddAction(addToTop: false) .HasText(T("Edit")) .HasUrl(Url.Action("EditMyProfile")) .HasButtonStyle(ButtonStyle.Primary); } else if (WorkContext.CurrentUser.SuperUser || CheckPermission(StandardPermissions.FullAccess)) { var user = service.GetUser(userId); title = string.Format(T("Profile for '{0}'", user.UserName)); result.AddAction(addToTop: false) .HasText(T("Edit")) .HasUrl(Url.Action("EditProfile", RouteData.Values.Merge(new { userId }))) .HasButtonStyle(ButtonStyle.Primary); } else { var user = service.GetUser(userId); title = string.Format(T("Profile for '{0}'", user.UserName)); onlyPublicProperties = true; } result.CancelButtonText = T("Close"); } result.Title = title; result.AddHiddenValue("UserId", userId.ToString()); bool hasProperties = false; foreach (var provider in userProfileProviders.Value) { var newGroup = result.AddGroupedLayout(provider.Category); foreach (var field in provider.GetFields(WorkContext, userId, onlyPublicProperties)) { hasProperties = true; result.AddProperty(field.Name, field, field.Value); newGroup.Add(field.Name); } } if (!hasProperties) { return(new ContentViewResult { Title = title, BodyContent = T("There is no profile available to view.") }); } return(result); }