public void SaveDraft(Guid formId, PageStructure pageStructure) { var pageRepository = new FormRepository(); var draft = pageRepository.FindContentVersions(By.ContentId(formId), ContentEnvironment.Draft).Result.Single(); new StructureNodeConverter().ApplyNewStructureToCmsPage(draft, pageStructure); pageRepository.Save(draft); }
protected override void OnInit(EventArgs e) { base.OnInit(e); var formIdRaw = Request["formId"]; var formTypeRaw = Request["formType"]; ContentTypePicker.Visible = string.IsNullOrEmpty(formTypeRaw) && string.IsNullOrEmpty(formIdRaw); if (ContentTypePicker.Visible) { ContentTypeDropDownList.Items.Add(new ListItem(string.Empty, string.Empty)); var all = new RepositoryMetadataManager().Find(); foreach (var contentType in all) { var text = RepositoryTypeResolver.ResolveTypeByApiId(contentType.ApiId).Name; ContentTypeDropDownList.Items.Add(new ListItem(text, contentType.ApiId.ToString())); } SelectContentTypeButton.Click += (sender, args) => { //todo: make this work regardless of the querystring already present. var url = HttpContext.Current.Request.RawUrl + "&formType=" + ContentTypeDropDownList.SelectedValue; HttpContext.Current.Response.Redirect(url); }; return; } CmsForm cmsForm; if (string.IsNullOrEmpty(formIdRaw)) { cmsForm = new CmsForm { ContentId = Guid.NewGuid(), RepositoryUid = new Guid(formTypeRaw) } } ; else { var formRepository = new FormRepository(); cmsForm = formRepository.FindContentVersions(By.ContentId(new Guid(formIdRaw)), ContentEnvironment.Draft).Result.Single(); } //var mgr = new EditingContextManager(); //var ec = mgr.GetOrCreateEditingContext(cmsForm); //CmsPageLayoutEngine.ActivateAndPlaceContent(RuntimePlaceHolder, ec.AllContent,PageRenderMode.PageDesigner); //RuntimePlaceHolder.Controls.AddAt(0, new DropTarget(RuntimePlaceHolder, DropTargetDirective.Begin)); //RuntimePlaceHolder.Controls.Add(new DropTarget(RuntimePlaceHolder, DropTargetDirective.End)); //this.Page.Init += (x,y) => this.Page.EnableDesignerDependencies(); }
public InternalLayout GetInternalLayout() { EnsureLayoutInitialized(); var layout = new InternalLayout(); layout.PlaceHolderIds.Add(nameof(surface)); var formRepository = new FormRepository(); _cmsForm = formRepository.FindContentVersions(By.ContentId(FormId), ContentEnvironment.Live).Result.Single(); foreach (var item in _cmsForm.ChildNodes) //todo: better way. { item.PlacementContentPlaceHolderId = nameof(surface); } layout.DefaultContent.AddRange(_cmsForm.ChildNodes.Select(x => PresentationElementHelpers.ToPresentationElement(x))); return(layout); }