/// <summary> /// Handles the page copy. /// </summary> private void HandlePageCopy() { String mainValueQueryEvent = Process.QueryEvents["mainvalue"]; SiteTree siteTree = new SiteTree(Process); siteTree.CopyTo(mainValueQueryEvent); }
/// <summary> /// Handles the page move. /// </summary> private void HandlePageMove() { String newParentPath = Process.QueryEvents["mainvalue"]; String path = Process.QueryData["pageidentifier"]; SiteTree siteTree = new SiteTree(Process); siteTree.Move(path, newParentPath); }
/// <summary> /// Handles the page remove container. /// </summary> private void HandlePageRemoveContainer() { Page currentPage = new SiteTree(Process).GetPage(Process.QueryData["pageidentifier"]); String mainValueQueryEvent = Process.QueryEvents["mainvalue"]; currentPage.Containers.Remove(int.Parse(mainValueQueryEvent) - 1); currentPage.Save(); }
/// <summary> /// Handles the move down. /// </summary> private void HandleMoveElementDown() { Page currentPage = new SiteTree(Process).GetPage(Process.QueryData["pageidentifier"]); String element = Process.QueryEvents["mainvalue"]; String[] elementParts = element.Split('-'); currentPage.Containers[int.Parse(elementParts[1]) - 1].Elements.MoveDown(int.Parse(elementParts[2]) - 1); currentPage.Save(); }
// >>> new save form handler by Kiho private void HandleAddComment() { Page currentPage = new SiteTree(Process).GetPage(Process.QueryData["pageidentifier"]); string element = Process.QueryEvents["mainvalue"]; string[] list = element.Split('_'); string elementname = Process.QueryData["container_" + list[1]]; HandleCommentElement(currentPage.Containers[int.Parse(list[1]) - 1].Elements.Create(elementname)); currentPage.Save(); }
/// <summary> /// Handles the add element. /// </summary> private void HandleAddElement() { Page currentPage = new SiteTree(Process).GetPage(Process.QueryData["pageidentifier"]); String query = Process.QueryEvents["mainvalue"]; String[] elementParts = query.Split('_'); String elementType = elementParts[0]; int containerId = int.Parse(elementParts[1]); currentPage.Containers[containerId - 1].Elements.Create(elementType, String.Empty, false); currentPage.Save(); }
/// <summary> /// Handles the page create container. /// </summary> private void HandlePageCreateContainer() { Page currentPage = new SiteTree(Process).GetPage(Process.QueryData["pageidentifier"]); String query = Process.QueryEvents["mainvalue"]; query = Common.CleanToSafeString(query).ToLower(); Container container = currentPage.Containers[query]; currentPage.Save(); }
public static async Task <SiteTree> CreateSite(I_Content_Service cs, I_Puck_Repository repo, string rootName, List <string> variants, List <bool> variantIsPublished, int levels, int branches, string username) { var tree = new SiteTree(); tree.Level = 1; tree.Branch = 1; for (var i = 0; i < variants.Count; i++) { var published = variantIsPublished[i]; var root = await cs.Create <Folder>(Guid.Empty, variants[i], rootName, template : "template.cshtml", published : published, userName : username); await cs.SaveContent(root, triggerEvents : false, userName : username); var revision = repo.CurrentRevision(root.Id, root.Variant); tree.Variants.Add(revision); } async Task CreateLevel(int level, SiteTree ctree) { if (level > levels) { return; } for (var j = 0; j < branches; j++) { var btree = new SiteTree(); btree.Level = level; btree.Branch = j + 1; for (var k = 0; k < variants.Count; k++) { var published = variantIsPublished[k]; var model = await cs.Create <Folder>(ctree.Variants.First().Id, variants[k], (j + 1).ToString(), template : "template.cshtml", published : published, userName : username); await cs.SaveContent(model, triggerEvents : false, userName : username); var revision = repo.CurrentRevision(model.Id, model.Variant); btree.Variants.Add(revision); } ctree.Children.Add(btree); await CreateLevel(level + 1, btree); } } await CreateLevel(2, tree); return(tree); }
/// <summary> /// Handles the add page. /// </summary> private void HandleAddPage() { String mainvalue = Process.QueryEvents["mainvalue"]; String[] pathSplit = mainvalue.Split('*'); String path = pathSplit[0]; String pageName = pathSplit[1]; SiteTree siteTree = new SiteTree(Process); if (!siteTree.Exists(path + "/" + pageName)) { siteTree.Create(path, pageName, pageName); } else { Process.AddMessage("A page with that name already exists."); } }
/// <summary> /// Saves the current edit model. /// </summary> /// <returns>Whether the entity was updated or not</returns> public bool Save() { using (var db = new DataContext()) { InternalId = (!String.IsNullOrEmpty(InternalId) ? InternalId.Replace(" ", "") : Name.Replace(" ", "")).ToUpper() ; var site = db.SiteTrees.Where(s => s.Id == Id).SingleOrDefault() ; if (site == null) { // Create new dedicated namespace var name = new Namespace() { Id = Guid.NewGuid(), Name = "Site namespace", InternalId = InternalId, Description = "Namespace for the site " + InternalId, } ; db.Namespaces.Add(name) ; // Create site site = new SiteTree() ; site.Id = Id ; site.NamespaceId = NamespaceId = name.Id ; db.SiteTrees.Add(site) ; } // If we've changed namespace, update all related permalinks. if (site.NamespaceId != NamespaceId) ChangeNamespace(db, Id, NamespaceId) ; // Update the site tree site.NamespaceId = NamespaceId ; site.InternalId = InternalId ; site.Name = Name ; site.HostNames = HostNames ; site.Description = Description ; // Update the site template var template = db.PageTemplates.Include(pt => pt.RegionTemplates).Where(pt => pt.Id == Id && pt.IsSiteTemplate).SingleOrDefault() ; if (template == null) { template = new PageTemplate() ; db.PageTemplates.Add(template) ; template.Id = Id ; template.Name = Id.ToString() ; template.IsSiteTemplate = true ; } template.Preview = Template.Preview ; template.Properties = Template.Properties ; // Update the regions var currentRegions = new List<Guid>() ; foreach (var reg in Regions) { var region = template.RegionTemplates.Where(r => r.Id == reg.Id).SingleOrDefault() ; if (region == null) { region = new RegionTemplate() ; db.RegionTemplates.Add(region) ; template.RegionTemplates.Add(region) ; region.Id = Guid.NewGuid() ; region.TemplateId = template.Id ; region.Type = reg.Type ; } region.Name = reg.Name ; region.InternalId = reg.InternalId ; region.Seqno = reg.Seqno ; region.Description = reg.Description ; currentRegions.Add(region.Id) ; } // Delete removed regions foreach (var reg in template.RegionTemplates.Where(r => !currentRegions.Contains(r.Id)).ToList()) { db.RegionTemplates.Remove(reg) ; } // Check that we have a site page, if not, create it var page = db.Pages.Where(p => p.SiteTreeId == site.Id && p.TemplateId == site.Id).SingleOrDefault() ; if (page == null) { // Create page page = new Page() { Id = Guid.NewGuid(), SiteTreeId = site.Id, TemplateId = site.Id, ParentId = site.Id, Title = site.Id.ToString(), PermalinkId = Guid.NewGuid() } ; // Create published version var published = page.Clone() ; published.IsDraft = false ; // Create permalink var permalink = new Permalink() { Id = page.PermalinkId, NamespaceId = site.NamespaceId, Name = site.Id.ToString(), Type = "SITE" } ; // Attach to context page.Attach(db, EntityState.Added) ; published.Attach(db, EntityState.Added) ; permalink.Attach(db, EntityState.Added) ; } var ret = db.SaveChanges() > 0 ; Id = site.Id ; // Refresh host name configuration if (ret) WebPages.WebPiranha.RegisterDefaultHostNames() ; return ret ; } }
/// <summary> /// Handles the save. /// </summary> private void HandleSave() { String elementName = String.Empty; Page currentPage = new SiteTree(Process).GetPage(Process.QueryData["pageidentifier"]); for (int i = 0; i < Process.QueryData.Count; i++) { Query query = Process.QueryData[i]; String[] queryParts = query.Name.Split('_'); if (queryParts.Length > 1) { switch (queryParts[0]) { case "attribute": if (queryParts[1].EndsWith("-list")) { XmlNode xmlNode = currentPage.GetAttribute(queryParts[1]); xmlNode.InnerText = String.Empty; foreach (String tmpString in query.Value.Split('\n')) { CommonXml.GetNode(xmlNode, "item", EmptyNodeHandling.ForceCreateNew).InnerText = tmpString; } } else { currentPage[queryParts[1]] = query.Value; } break; case "element": Container container = currentPage.Containers[int.Parse(queryParts[1]) - 1]; if (queryParts[3].EndsWith("-list")) { XmlNode xmlNode = CommonXml.GetNode(container.Elements[int.Parse(queryParts[2]) - 1].Node, queryParts[3]); xmlNode.InnerText = String.Empty; foreach (String tmpString in query.Value.Split('\n')) { if (tmpString != String.Empty) { XmlNode tmpNode = CommonXml.GetNode(xmlNode, "item", EmptyNodeHandling.ForceCreateNew); tmpNode.InnerText = tmpString; CommonXml.AppendAttribute(tmpNode, "id", Common.CleanToSafeString(tmpString)); } } } else { if (elementName != query.Name.Substring(0, query.Name.LastIndexOf('_'))) { elementName = query.Name.Substring(0, query.Name.LastIndexOf('_')); container.Elements[int.Parse(queryParts[2]) - 1].Publish = false.ToString(CultureInfo.InvariantCulture).ToLower(); } if (query.Name.EndsWith("elementtitle")) { container.Elements[int.Parse(queryParts[2]) - 1].Name = query.Value; } else if (query.Name.EndsWith("elementpublish")) { container.Elements[int.Parse(queryParts[2]) - 1].Publish = query.Value.ToLower() == "publish" ? true.ToString(CultureInfo.InvariantCulture).ToLower() : false.ToString(CultureInfo.InvariantCulture).ToLower(); } else { container.Elements[int.Parse(queryParts[2]) - 1][queryParts[3]] = query.Value; } } break; } } } currentPage.Save(); }
/// <summary> /// Saves the current edit model. /// </summary> /// <returns>Whether the entity was updated or not</returns> public bool Save() { using (var db = new DataContext()) { InternalId = (!String.IsNullOrEmpty(InternalId) ? InternalId.Replace(" ", "") : Name.Replace(" ", "")).ToUpper(); var site = db.SiteTrees.Where(s => s.Id == Id).SingleOrDefault(); if (site == null) { // Create new dedicated namespace var name = new Namespace() { Id = Guid.NewGuid(), Name = "Site namespace", InternalId = InternalId, Description = "Namespace for the site " + InternalId, }; db.Namespaces.Add(name); // Create site site = new SiteTree(); site.Id = Id; site.NamespaceId = NamespaceId = name.Id; db.SiteTrees.Add(site); } // If we've changed namespace, update all related permalinks. if (site.NamespaceId != NamespaceId) { ChangeNamespace(db, Id, NamespaceId); } // Update the site tree site.NamespaceId = NamespaceId; site.InternalId = InternalId; site.Name = Name; site.HostNames = HostNames; site.Description = Description; // Update the site template var template = db.PageTemplates.Include(pt => pt.RegionTemplates).Where(pt => pt.Id == Id && pt.IsSiteTemplate).SingleOrDefault(); if (template == null) { template = new PageTemplate(); db.PageTemplates.Add(template); template.Id = Id; template.Name = Id.ToString(); template.IsSiteTemplate = true; } template.Preview = Template.Preview; template.Properties = Template.Properties; // Update the regions var currentRegions = new List <Guid>(); foreach (var reg in Regions) { var region = template.RegionTemplates.Where(r => r.Id == reg.Id).SingleOrDefault(); if (region == null) { region = new RegionTemplate(); db.RegionTemplates.Add(region); template.RegionTemplates.Add(region); region.Id = Guid.NewGuid(); region.TemplateId = template.Id; region.Type = reg.Type; } region.Name = reg.Name; region.InternalId = reg.InternalId; region.Seqno = reg.Seqno; region.Description = reg.Description; currentRegions.Add(region.Id); } // Delete removed regions foreach (var reg in template.RegionTemplates.Where(r => !currentRegions.Contains(r.Id)).ToList()) { db.RegionTemplates.Remove(reg); } // Check that we have a site page, if not, create it var page = db.Pages.Where(p => p.SiteTreeId == site.Id && p.TemplateId == site.Id).SingleOrDefault(); if (page == null) { // Create page page = new Page() { Id = Guid.NewGuid(), SiteTreeId = site.Id, TemplateId = site.Id, ParentId = site.Id, Title = site.Id.ToString(), PermalinkId = Guid.NewGuid() }; // Create published version var published = page.Clone(); published.IsDraft = false; // Create permalink var permalink = new Permalink() { Id = page.PermalinkId, NamespaceId = site.NamespaceId, Name = site.Id.ToString(), Type = "SITE" }; // Attach to context page.Attach(db, EntityState.Added); published.Attach(db, EntityState.Added); permalink.Attach(db, EntityState.Added); } var ret = db.SaveChanges() > 0; Id = site.Id; // Refresh host name configuration if (ret) { WebPages.WebPiranha.RegisterDefaultHostNames(); } return(ret); } }