Ejemplo n.º 1
0
        public ActivityStreamContentDescription GetContentDescription(ActiviyStreamWriterContext context)
        {
            if (!this.CanApply(context))
            {
                return(null);
            }

            //  var ticketPart = context.ContentItem.As<TicketPart>();
            // var ticketPart = context.ContentItem.As<WorkBookPart>();

            RouteValueDictionary routeValueDictionary = new RouteValueDictionary();

            routeValueDictionary.Add("Action", "Display");
            routeValueDictionary.Add("Controller", "Item");
            routeValueDictionary.Add("Area", "Intelli");
            routeValueDictionary.Add("ContentItemId", context.ContentItem.ContentItemId);
            ActivityStreamContentDescription returnValue = new ActivityStreamContentDescription(StreamWriters.TicketStreamWriter)
            {
                Weight = 1, RouteValues = routeValueDictionary
            };

            // new ticket
            if (context.Snapshot == null)
            {
                //  returnValue.Description = this.GetCreatedTicketDescription(ticketPart);
                return(returnValue);
            }

            //  string ticketDescription = this.GetTicketIdAndTitle(ticketPart);

            // returnValue.Description = string.Format("{0} {1}", T["Changed WorkBook"], ticketDescription);
            return(returnValue);
        }
Ejemplo n.º 2
0
        public ActivityStreamContentDescription GetContentDescription(ActiviyStreamWriterContext context)
        {
            if (!this.CanApply(context))
            {
                return(null);
            }

            var folderPart = context.ContentItem.As <FolderPart>();

            string folderDescription = contentItemDescriptorManager.GetDescription(context.ContentItem);

            RouteValueDictionary routeValueDictionary = new RouteValueDictionary();

            routeValueDictionary.Add("action", "Display");
            routeValueDictionary.Add("controller", "Folder");
            routeValueDictionary.Add("area", "Orchard.CRM.Project");
            routeValueDictionary.Add("id", context.ContentItem.Id);

            ActivityStreamContentDescription returnValue = new ActivityStreamContentDescription(StreamWriters.FolderStreamWriter)
            {
                Weight = 1, RouteValues = routeValueDictionary
            };

            var originalFolder = this.folderService.GetFolder(folderPart.Record.Id);

            // new folder
            if (originalFolder == null)
            {
                returnValue.Description = T("Creates new folder").Text;
            }
            else if (context.Snapshot == null)
            {
                returnValue.Description = T("Creates the '{0}'", folderDescription).Text;
            }
            else
            {
                returnValue.Description = string.Format("{0} {1}", this.T("on Folder").Text, folderDescription);
            }

            return(returnValue);
        }
        public void WriteChangesToStreamActivity(ContentItem contentItem, dynamic snapshot, bool createdBySystem, string mainStreamWriter)
        {
            var currentUser = this.services.WorkContext.CurrentUser;
            int?userId      = !createdBySystem && currentUser != null ? (int?)currentUser.Id : null;

            List <ActivityStreamChangeItem>         changes           = new List <ActivityStreamChangeItem>();
            List <ActivityStreamContentDescription> descriptions      = new List <ActivityStreamContentDescription>();
            IDictionary <string, object>            oldDataDictionary = snapshot != null ? snapshot as IDictionary <string, object> : null;

            foreach (var writer in this.activityStreamWriters)
            {
                var writerSnapshot = oldDataDictionary != null ? oldDataDictionary[writer.Name] : null;
                ActiviyStreamWriterContext context = new ActiviyStreamWriterContext(contentItem, writerSnapshot, currentUser);

                if (writer.CanApply(context))
                {
                    var changeDescriptions = writer.GetChangesDescriptions(context);

                    if (changeDescriptions != null)
                    {
                        changes.AddRange(changeDescriptions);
                    }

                    var activityContentDescription = writer.GetContentDescription(context);
                    if (activityContentDescription != null)
                    {
                        descriptions.Add(activityContentDescription);
                    }
                }
            }

            // description with highest weight
            ActivityStreamContentDescription contentDescription = null;

            if (!string.IsNullOrEmpty(mainStreamWriter))
            {
                contentDescription = descriptions.FirstOrDefault(c => c.WriterName == mainStreamWriter);
            }

            if (contentDescription == null)
            {
                contentDescription = descriptions
                                     .OrderByDescending(c => c.Weight)
                                     .FirstOrDefault();
            }

            // if it is an update, but noting is changed, then no activity record must be created
            if (snapshot != null && changes.Count == 0)
            {
                return;
            }

            string description = contentDescription.Description;

            if (changes.Count == 1)
            {
                description = string.Format(CultureInfo.InvariantCulture, "{1} - {0}", description, changes[0].Change).Trim();
                changes.Clear();
            }

            this.WriteChangesToStreamActivity(userId, contentItem.Id, contentItem.VersionRecord.Id, changes.ToArray(), description, contentDescription.RouteValues);
        }