public static Sequential Load(string folderName, string urlName, EdxLoadOptions options) { return(Load <Sequential>(folderName, "sequential", urlName, options, seq => { seq.Verticals = seq.VerticalReferences.Select(x => Vertical.Load(folderName, x.UrlName, options)).ExceptNulls().ToArray(); seq.VerticalReferences = seq.Verticals.Select(v => v.GetReference()).ToArray(); })); }
private void SaveSequentialContainingSubverticals(EdxCourse course, IEnumerable <Vertical> verticalsToAdd, Vertical afterThisVertical) { var sequential = course.GetSequentialContainingVertical(afterThisVertical.UrlName); var filename = string.Format("{0}/sequential/{1}.xml", OlxPath, sequential.UrlName); var sequentialXml = XDocument.Load(filename).Root ?? new XElement("sequential"); var refs = sequentialXml.Elements("vertical").ToList(); var insertIndex = refs .Select((v, i) => new { urlName = v.Attribute("url_name").Value, i }) .First(v => v.urlName == afterThisVertical.UrlName).i + 1; refs.InsertRange(insertIndex, verticalsToAdd.Select(v => new XElement("vertical", new XAttribute("url_name", v.UrlName)))); sequentialXml.ReplaceNodes(refs); sequentialXml.Save(filename); new FileInfo(filename).RemoveXmlDeclaration(); }