コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 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));
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }