/// <summary> /// Get resources and misc info. /// </summary> /// <returns></returns> public Dictionary <string, object> GetTotalActivitiesAndResources() { var userService = ApplicationContext.Services.UserService; var currentUser = userService.GetByUsername(Security.CurrentUser.Username); var cultureInfo = UserHelper.GetCultureInfo(currentUser.Language); var resources = new Dictionary <string, string> { { "ActivityLog", Resource.ResourceManager.GetString("ActivityLog", cultureInfo) }, { "Saved", Resource.ResourceManager.GetString("Saved", cultureInfo) }, { "Moved", Resource.ResourceManager.GetString("Moved", cultureInfo) }, { "Deleted", Resource.ResourceManager.GetString("Deleted", cultureInfo) }, { "Published", Resource.ResourceManager.GetString("Published", cultureInfo) }, { "And", Resource.ResourceManager.GetString("And", cultureInfo) }, { "RecycleBin", Resource.ResourceManager.GetString("RecycleBin", cultureInfo) }, { "EmptiedRecycleBin", Resource.ResourceManager.GetString("EmptiedRecycleBin", cultureInfo) }, { "Unpublished", Resource.ResourceManager.GetString("Unpublished", cultureInfo) }, { "To", Resource.ResourceManager.GetString("To", cultureInfo) }, { "Created", Resource.ResourceManager.GetString("Created", cultureInfo) }, { "Uploaded", Resource.ResourceManager.GetString("Uploaded", cultureInfo) }, { "Copied", Resource.ResourceManager.GetString("Copied", cultureInfo) }, { "RolledBack", Resource.ResourceManager.GetString("RolledBack", cultureInfo) } }; var repo = new UmbracoRepository(); var response = new Dictionary <string, object>(); response["NumberOfActivities"] = repo.CountLogItems(); response["Resources"] = resources; return(response); }
public UserDashboardViewModel GetActivitiesByDate(DateTime date) { var umbracoRepository = new UmbracoRepository(); var userDashboardViewModel = new UserDashboardViewModel(); //if this date then get first date if (date.ToString("yyyy-MM-dd") == "1987-05-10") { var userActivitiesDate = umbracoRepository.GetAvailableDates(); date = userActivitiesDate.ToArray()[0]; } var userActivities = umbracoRepository.GetUserActivities(date).ToArray(); foreach (var userActivityItem in userActivities) { var useractViewObj = new UserActivitiesViewModel(userActivityItem.Datestamp) { NodeId = userActivityItem.NodeId, LogComment = userActivityItem.LogComment, LogHeader = userActivityItem.LogHeader, Text = userActivityItem.Text, Username = userActivityItem.Username, UserTypeAlias = userActivityItem.UserTypeAlias }; userDashboardViewModel.UsersActivitiesLog.Add(useractViewObj); } return(userDashboardViewModel); }
public DevDashboardViewModel GetViewModel() { var umbracoRepository = new UmbracoRepository(); var dashboardViewModel = new DevDashboardViewModel(); dashboardViewModel.HijackedRoutes = umbracoRepository.GetControllersAssignableFrom(typeof(IRenderMvcController), true) .Select(x => new HijackedRouteViewModel { Name = x.Name, Namespace = x.Namespace, ActionMethods = x.ActionMethods, }) .OrderBy(x => x.Name) .ToList(); dashboardViewModel.SurfaceControllers = umbracoRepository.GetControllersAssignableFrom(typeof(SurfaceController)) .Select(x => new SurfaceControllerViewModel { Name = x.Name, Namespace = x.Namespace, ActionMethods = x.ActionMethods, }) .OrderBy(x => x.Name) .ToList(); dashboardViewModel.ApplicationEventHandlers = umbracoRepository.GetApplicationEventHandlers() .Select(x => new ApplicationEventHandlerViewModel { Name = x.Name, Namespace = x.Namespace, }) .OrderBy(x => x.Name) .ToList(); dashboardViewModel.ContentFinders = umbracoRepository.GetContentFinders() .Select(x => new ContentFinderViewModel { Name = x.Name, Namespace = x.Namespace, }) .OrderBy(x => x.Name) .ToList(); dashboardViewModel.CustomEvents.AddRange(GetCustomEventsForType(umbracoRepository, ApplicationContext.Current.Services.ContentService, "ContentService")); dashboardViewModel.CustomEvents.AddRange(GetCustomEventsForType(umbracoRepository, ApplicationContext.Current.Services.MediaService, "MediaService")); dashboardViewModel.CustomEvents.AddRange(GetCustomEventsForType(umbracoRepository, ApplicationContext.Current.Services.MemberService, "MemberService")); return(dashboardViewModel); }
public IEnumerable <string> GetAvailableDates() { var umbracoRepository = new UmbracoRepository(); var userDashboardViewModel = new UserDashboardViewModel(); var userActivitiesDate = umbracoRepository.GetAvailableDates().ToArray(); IList <string> itemTransform = new List <string>(); foreach (DateTime date in userActivitiesDate) { itemTransform.Add(date.ToString("yyyy-MM-dd")); } return(itemTransform); }
private IEnumerable <CustomEventViewModel> GetCustomEventsForType(UmbracoRepository umbracoRepository, IService serviceInstance, string serviceName) { return(umbracoRepository.GetCustomEvents(serviceInstance) .Select(x => new CustomEventViewModel { ServiceName = serviceName, EventName = x.EventName, Handlers = x.Handlers .Select(y => new CustomEventViewModel.Handler { Name = y.Name, Namespace = y.Namespace, }) .OrderBy(y => y.Name) }) .OrderBy(x => x.ServiceName) .ThenBy(x => x.EventName)); }
public DashboardViewModel GetViewModel() { var umbracoRepository = new UmbracoRepository(); var dashboardViewModel = new DashboardViewModel(); var unpublishedContent = umbracoRepository.GetUnpublishedContent().ToArray(); var logItems = umbracoRepository.GetLatestLogItems().ToArray(); var nodesInRecyleBin = umbracoRepository.GetRecycleBinNodes().Select(x => x.Id).ToArray(); foreach (var logItem in logItems.Take(10)) { var user = GetUser(logItem.UserId); var contentNode = GetContent(logItem.NodeId); if (contentNode == null || !CurrentUserHasPermissions(contentNode)) { continue; } var activityViewModel = new ActivityViewModel { UserDisplayName = user.Name, UserAvatarUrl = UserAvatarProvider.GetAvatarUrl(user), NodeId = logItem.NodeId, NodeName = contentNode.Name, Message = logItem.Comment, LogItemType = logItem.LogType.ToString(), Timestamp = logItem.Timestamp }; var unpublishedVersionOfLogItem = unpublishedContent.FirstOrDefault(x => x.NodeId == logItem.NodeId && x.ReleaseDate != null); if (logItem.LogType == LogTypes.Save && unpublishedVersionOfLogItem != null && unpublishedVersionOfLogItem.UpdateDate != null) { if (logItem.Timestamp.IsSameMinuteAs(unpublishedVersionOfLogItem.UpdateDate.Value)) { activityViewModel.LogItemType = "SavedAndScheduled"; } activityViewModel.ScheduledPublishDate = unpublishedVersionOfLogItem.ReleaseDate; } if (logItem.LogType == LogTypes.UnPublish && nodesInRecyleBin.Contains(logItem.NodeId)) { activityViewModel.LogItemType = "UnPublishToRecycleBin"; } dashboardViewModel.Activities.Add(activityViewModel); } foreach (var item in unpublishedContent.Where(x => x.ReleaseDate == null)) { var user = GetUser(item.DocumentUser); var contentNode = GetContent(item.NodeId); // Checking for null, making sure that user has permissions and checking for this content node in the recycle bin. If its in the recycle bin // we should not return this as an unpublished node. if (contentNode == null || !CurrentUserHasPermissions(contentNode) || nodesInRecyleBin.Contains(contentNode.Id)) { continue; } var activityViewModel = new ActivityViewModel { UserDisplayName = user.Name, UserAvatarUrl = UserAvatarProvider.GetAvatarUrl(user), NodeId = item.NodeId, NodeName = contentNode.Name, Timestamp = item.UpdateDate != null ? item.UpdateDate.Value : (DateTime?)null }; dashboardViewModel.UnpublishedContent.Add(activityViewModel); } foreach (var item in logItems.Where(x => x.UserId == Security.CurrentUser.Id).Take(10)) { var contentNode = GetContent(item.NodeId); if (contentNode == null || !CurrentUserHasPermissions(contentNode)) { continue; } var activityViewModel = new ActivityViewModel { NodeId = item.NodeId, NodeName = contentNode.Name, LogItemType = item.LogType.ToString(), Timestamp = item.Timestamp }; dashboardViewModel.UserRecentActivity.Add(activityViewModel); } dashboardViewModel.CountPublishedNodes = umbracoRepository.CountPublishedNodes(); dashboardViewModel.CountTotalWebsiteMembers = umbracoRepository.CountMembers(); dashboardViewModel.CountNewMembersLastWeek = umbracoRepository.CountNewMember(); dashboardViewModel.CountContentInRecycleBin = nodesInRecyleBin.Count(); return(dashboardViewModel); }
public IEnumerable <ActivityViewModel> GetLog(int take = 10, int skip = 0) { string currentUserLanguage = string.Empty; var currentUser = Services.UserService.GetByUsername(User.Identity.Name); if (currentUser == null) { LogHelper.Warn(GetType(), string.Format("No user found by User.Identity.Name '{0}'", User.Identity.Name)); } else { currentUserLanguage = currentUser.Language; } var repo = new UmbracoRepository(); var logItems = repo.GetLatestLogItems(take, skip); var nodesInRecyleBin = repo.GetRecycleBinNodes().Select(x => x.Id).ToArray(); var activities = new List <ActivityViewModel>(); foreach (var logItem in logItems) { var user = GetUser(logItem.UserId); var contentNode = GetContent(logItem.NodeId); var vm = new ActivityViewModel { UserDisplayName = user.Name, UserAvatarUrl = UserAvatarProvider.GetAvatarUrl(user), NodeId = logItem.NodeId, Message = logItem.Comment, LogItemType = logItem.LogType.ToString(), Timestamp = logItem.Timestamp, SectionHeader = GetHeader(logItem.Timestamp, UserHelper.GetCultureInfo(currentUserLanguage))// This is the date-header ("today", "2015-06-16" etc.) }; if (contentNode != null) { vm.DisplayName = contentNode.Name; vm.ContentTypeIcon = contentNode.ContentType.Icon; } var customAction = GetCustomAction(logItem); if (customAction == CustomActions.RecycleBinEmptied) { vm.LogItemType = "RecycleBinEmptied"; } if (customAction == CustomActions.SaveMedia || customAction == CustomActions.MoveMediaToRecycleBin) { var media = Umbraco.TypedMedia(logItem.NodeId); if (media != null) { if (media.DocumentTypeAlias != "Folder" && !String.IsNullOrEmpty(media.Url)) { if (File.Exists(HttpContext.Current.Server.MapPath(media.Url))) { vm.ContentTypeIcon = media.Url; } } vm.LogItemType = media.DocumentTypeAlias; vm.DisplayName = media.Name; } else { // If the item is deleted from recycle bin, fallback to show just a file-icon vm.LogItemType = "File"; } vm.CustomAction = customAction.ToString(); } if (logItem.Comment.StartsWith("Move Content to Recycle") && nodesInRecyleBin.Contains(logItem.NodeId)) { vm.LogItemType = "MovePageToRecycleBin"; } // Set the final name for display (node id) if its still empty if (string.IsNullOrEmpty(vm.DisplayName)) { vm.DisplayName = string.Format("[{0}]", logItem.NodeId); } activities.Add(vm); } return(activities); }