void Document_AfterPublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e) { ItemIdentifier itemId = new ItemIdentifier(sender.UniqueId.ToString(), ItemProviders.ProviderIDCollection.documentItemProviderGuid); ItemIdentifier propertyId = new ItemIdentifier(sender.UniqueId.ToString(), ItemProviders.ProviderIDCollection.propertyDataItemProviderGuid); sendToCache(new[] { itemId, propertyId }); }
void Document_AfterPublish(umbraco.cms.businesslogic.web.Document sender, umbraco.cms.businesslogic.PublishEventArgs e) { if (sender.ContentType.Alias == "Forum") { Businesslogic.Forum f = new uForum.Businesslogic.Forum(sender.Id); if (!f.Exists) { f.Id = sender.Id; f.ParentId = sender.Parent.Id; f.SortOrder = sender.sortOrder; } f.Save(); } }
void Document_BeforePublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e) { if (sender.ContentType.Alias == "Project") { //ensure that packages have a guid if (sender.getProperty("packageGuid") != null && String.IsNullOrEmpty(sender.getProperty("packageGuid").Value.ToString())) { sender.getProperty("packageGuid").Value = Guid.NewGuid().ToString(); sender.Save(); } //if the score is above the minimum, set the approved variable int score = Xslt.Score(sender.Id, "powersProject"); if (score >= 15) { sender.getProperty("approved").Value = true; sender.Save(); } //this ensures the package stores it's compatible versions on the node itself, so we save a ton of sql calls if (sender.getProperty("compatibleVersions") != null) { List <string> compatibleVersions = new List <string>(); foreach (WikiFile wf in WikiFile.CurrentFiles(sender.Id)) { if (wf.FileType == "package") { foreach (var ver in wf.Versions) { if (!compatibleVersions.Contains(ver.Version)) { compatibleVersions.Add(ver.Version); } } } } string _compatibleVersions = string.Join(",", compatibleVersions.ToArray()); sender.getProperty("compatibleVersions").Value = "saved," + _compatibleVersions; } } }
/// <summary> /// Moves a Post if the Post Date Changes /// </summary> /// <param name="sender">Document Being Published</param> /// <param name="e">Publish Event Args</param> void Document_BeforePublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e) { if (sender.ContentType.Alias == "NewsArticle") //As this runs for every publish event, only proceed if this is NewsArticle { Log.Add(LogTypes.Debug, sender.User, sender.Id, string.Format("Start Before Publish Event for Blog Post {0}", sender.Id)); if (sender.getProperty("articleDate") != null) //If no post date, skip { if (sender.Parent != null) //If top of tree, something is wrong. Skip. { try { DocumentVersionList[] postVersions = sender.GetVersions(); bool _versionCheck = true; DateTime postDate; postDate = System.Convert.ToDateTime(sender.getProperty("articleDate").Value); if (postVersions.Length > 1) //If it has been published, check post date info { //Length -1 is current version Length -2 is past version (if it exists) Guid previousVersion = postVersions[postVersions.Length - 2].Version; Document doc = new Document(sender.Id, previousVersion); DateTime previousPostDate = System.Convert.ToDateTime(doc.getProperty("articleDate").Value); //_versionCheck = (postDate != previousPostDate); } if (_versionCheck) //Only do the date folder movement if the PostDate is changed or is new Post. { string[] strArray = { postDate.Year.ToString(), postDate.Month.ToString(), postDate.Day.ToString() }; if (strArray.Length == 3) { Node topBlogLevel = new Node(sender.Parent.Id); //Traverse up the tree to Find the NewsFolder Node since we are likely in a Date Folder path while (topBlogLevel != null && topBlogLevel.NodeTypeAlias != "NewsFolder") { if (topBlogLevel.Parent != null) { topBlogLevel = new Node(topBlogLevel.Parent.Id); } else { topBlogLevel = null; } } if (topBlogLevel != null) { Document document = null; Node folderNode = null; foreach (Node ni in topBlogLevel.Children) { if (ni.Name == strArray[0]) { folderNode = new Node(ni.Id);//year node document = new Document(ni.Id); break; } } if (folderNode == null) { document = Document.MakeNew(strArray[0], DocumentType.GetByAlias("DateFolder"), sender.User, topBlogLevel.Id); document.Publish(sender.User); library.UpdateDocumentCache(document.Id); folderNode = new Node(document.Id); } Node folderNode2 = null; foreach (Node ni in folderNode.Children) { if (ni.Name == strArray[1]) { folderNode2 = new Node(ni.Id); break; } } if (folderNode2 == null) { Document document2 = Document.MakeNew(strArray[1], DocumentType.GetByAlias("DateFolder"), sender.User, folderNode.Id); document2.Publish(sender.User); library.UpdateDocumentCache(document2.Id); folderNode2 = new Node(document2.Id); } Document document3 = null; //As this is the last check, a document object is fine foreach (Node ni in folderNode2.Children) { if (ni.Name == strArray[2]) { document3 = new Document(ni.Id); break; } } if (document3 == null) { document3 = Document.MakeNew(strArray[2], DocumentType.GetByAlias("DateFolder"), sender.User, folderNode2.Id); document3.Publish(sender.User); library.UpdateDocumentCache(document3.Id); } if (sender.Parent.Id != document3.Id) { sender.Move(document3.Id); Log.Add(LogTypes.Debug, sender.User, sender.Id, string.Format("Move Required for BlogPost {0} for PostDate {1}. Moved Under Node {2}", sender.Id, postDate.ToShortDateString(), document3.Id)); } } else { Log.Add(LogTypes.Debug, sender.User, sender.Id, string.Format("Unable to determine top of Blog for BlogPost {0} while attempting to move to new Post Date", sender.Id)); } } } } catch (Exception Exp) { Log.Add(LogTypes.Debug, sender.User, sender.Id, string.Format("Error while Finding Blog Folders for BlogPost {0} while trying to move to new Post Date. Error: {1}", sender.Id, Exp.Message)); } umbraco.library.RefreshContent(); } } } }
void Document_AfterPublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e) { InstantNotification not = new InstantNotification(); not.Invoke(Config.ConfigurationFile, Config.AssemblyDir, "NewComment", sender); }