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); }
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); }