private IEnumerable <ItemDefinition> CreateDefinitions(HttpContextBase context) { var item = Selection.ParseSelectionFromRequest(); if (item != null) { return(engine.Definitions.GetAllowedChildren(item, null).WhereAuthorized(engine.SecurityManager, context.User, item)); } else { return(engine.Definitions.GetDefinitions()); } }
private void EnsureValidSelection() { if (Selection.ParseSelectionFromRequest() == null) { throw new HttpException(404, "Not Found"); } }
private static ContentItem GetSelectedItem(SelectionUtility selection, ProfileUser profile) { var selectedItem = selection.ParseSelectionFromRequest(); if (selectedItem == null && profile.Settings.ContainsKey("Selected")) { selectedItem = selection.ParseSelected((string)profile.Settings["Selected"]); } return(selectedItem ?? (selection.Traverse.StartPage)); }
public object GetMessages(HttpContextBase context, SelectionUtility selection) { var messageContext = new Edit.Collaboration.CollaborationContext { SelectedItem = selection.ParseSelectionFromRequest(), User = context.User } .ParseLastDismissed(context.Request["lastDismissed"]); return(new { Messages = engine.Resolve <N2.Edit.Collaboration.ManagementMessageCollector>().GetMessages(messageContext).ToList() }); }
public ContentItem GetAutosaveVersion() { var value = Page.Request[ClientID + "_autosaved_url"]; if (string.IsNullOrEmpty(value)) { return(null); } Url editUrl = value; var selection = new SelectionUtility(key => editUrl[key], Engine); var item = selection.ParseSelectionFromRequest(); return(item); }
private void Autosave(HttpContextBase context) { var selected = Selection.ParseSelectionFromRequest(); if (selected == null) { throw new HttpException((int)HttpStatusCode.NotFound, "Not Found"); } var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary <object>(); var discriminator = EditExtensions.GetDiscriminator(context.Request); var versions = engine.Resolve <VersionManager>(); ContentItem item; if (string.IsNullOrEmpty(discriminator)) { item = selected; if (item.State != ContentState.Draft) { item = versions.GetOrCreateDraft(item); } Update(requestBody, item); var page = Find.ClosestPage(item); // existing page // draft of existing page // existing part // draft of existing part if (item.VersionOf.HasValue) { versions.UpdateVersion(item); } else if (page != null && page.VersionOf.HasValue) { versions.UpdateVersion(item); } else { engine.Persister.Save(item); } } else { var parent = selected; int id; if (requestBody.ContainsKey("ID") && (id = (int)requestBody["ID"]) != 0) { item = engine.Persister.Get(id); } else { var definitions = engine.Resolve <IDefinitionManager>(); var definition = definitions.GetDefinition(discriminator); if (!definition.IsPage) { if (parent.ID != 0 && !parent.VersionOf.HasValue) { parent = versions.GetOrCreateDraft(parent); } } var templateKey = context.Request["template"]; var zoneName = context.Request["zoneName"]; item = engine.Resolve <ContentActivator>().CreateInstance(definition.ItemType, parent, templateKey); item.State = ContentState.Draft; item.ZoneName = zoneName; item.AddTo(parent); } Update(requestBody, item); // new page // new part if (item.ID == 0 && (item.VersionOf.HasValue || !item.IsPage)) { versions.UpdateVersion(item); } else { engine.Persister.Save(item); } } context.Response.WriteJson(new { EditUrl = engine.ManagementPaths.GetEditExistingItemUrl(item, context.Request["returnUrl"]), PageID = Find.ClosestPage(item)?.VersionOf?.ID ?? Find.ClosestPage(item)?.ID, ID = item.VersionOf.ID ?? item.ID, VersionIndex = item.VersionIndex, VersionKey = item.GetVersionKey(), Selected = context.Request[PathData.SelectedQueryKey], Path = item.Path, PreviewUrl = item.Url, Permission = engine.ResolveAdapter <NodeAdapter>(item).GetMaximumPermission(item), Permissions = engine.SecurityManager.GetPermissions(context.User, item), Draft = new DraftInfo { ItemID = item.VersionOf.ID ?? item.ID, Saved = item.Updated, SavedBy = item.SavedBy, VersionIndex = item.VersionIndex }, Node = engine.ResolveAdapter <NodeAdapter>(item.VersionOf.Value ?? item).GetTreeNode(item.VersionOf.Value ?? item) }); }
public virtual ContextData GetInterfaceContextData(HttpContextBase context, SelectionUtility selection) { var item = selection.ParseSelectionFromRequest(); Url selectedUrl = context.Request["selectedUrl"]; if (item == null && selectedUrl != null) { item = selection.ParseUrl(selectedUrl); } var data = new ContextData(); if (item != null) { var adapter = engine.GetContentAdapter <NodeAdapter>(item); data.CurrentItem = adapter.GetTreeNode(item); data.ExtendedInfo = CreateExtendedContextData(item, resolveVersions: true); var l = adapter.GetLanguage(item); if (l != null) { data.Language = new ContextLanguage { IconClass = "sprite " + (l.LanguageCode.Split('-').LastOrDefault() ?? string.Empty).ToLower(), LanguageCode = l.LanguageCode, LanguageTitle = l.LanguageTitle } } ; data.Flags = adapter.GetNodeFlags(item).ToList(); } else { data.Flags = new List <string>(); } var mangementUrl = "{ManagementUrl}".ResolveUrlTokens(); if (!selectedUrl.IsEmpty()) { data.ReturnUrl = HttpUtility.UrlDecode(selectedUrl["returnUrl"]); var isOrganizing = selectedUrl["edit"] == "drag"; if (selectedUrl.Path.StartsWith(mangementUrl, StringComparison.InvariantCultureIgnoreCase)) { data.Flags.Add("Management"); data.Flags.Add(selectedUrl.Path.Substring(mangementUrl.Length).ToUrl().PathWithoutExtension.Replace("/", "")); if (isOrganizing) { data.Flags.Add("Organize"); } } else if (isOrganizing) { data.Flags.Add("Management"); data.Flags.Add("Organize"); } } if (new[] { "MyselfRoot", "ContentEditRecursive", "ContentTemplatesDefault", "ContentWizardDefault", "UsersUsers" }.Intersect(data.Flags).Any() == false) { data.Flags.Add("ContentPages"); } if (ContextBuilt != null) { ContextBuilt(this, new ContextBuiltEventArgs { Data = data }); } return(data); }
private void Autosave(HttpContextBase context) { var selected = Selection.ParseSelectionFromRequest(); if (selected == null) { throw new HttpException((int)HttpStatusCode.NotFound, "Not Found"); } var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary <object>(); var discriminator = EditExtensions.GetDiscriminator(context.Request); var versions = engine.Resolve <VersionManager>(); ContentItem item; if (string.IsNullOrEmpty(discriminator)) { item = selected; if (item.State != ContentState.Draft) { item = versions.GetOrCreateDraft(item); } Update(requestBody, item); if (item.ID == 0 && item.VersionOf.HasValue) { versions.UpdateVersion(item); } else { engine.Persister.Save(item); } } else { int id; if (requestBody.ContainsKey("ID") && (id = (int)requestBody["ID"]) != 0) { item = engine.Persister.Get(id); } else { item = engine.Resolve <IDefinitionManager>().GetDefinition(discriminator).CreateInstance(selected); item.State = ContentState.Draft; } Update(requestBody, item); if (item.ID == 0 && (item.VersionOf.HasValue || !item.IsPage)) { versions.UpdateVersion(item); } else { engine.Persister.Save(item); } } context.Response.WriteJson(new { ID = item.VersionOf.ID ?? item.ID, VersionIndex = item.VersionIndex, Path = item.Path, PreviewUrl = item.Url, Permission = engine.ResolveAdapter <NodeAdapter>(item).GetMaximumPermission(item), Permissions = engine.SecurityManager.GetPermissions(context.User, item), Draft = new DraftInfo { ItemID = item.VersionOf.ID ?? item.ID, Saved = item.Updated, SavedBy = item.SavedBy, VersionIndex = item.VersionIndex }, Node = engine.ResolveAdapter <NodeAdapter>(item.VersionOf.Value ?? item).GetTreeNode(item.VersionOf.Value ?? item) }); }
private void Autosave(HttpContextBase context) { var selected = Selection.ParseSelectionFromRequest(); if (selected == null) { throw new HttpException((int)HttpStatusCode.NotFound, "Not Found"); } var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary <object>(); var discriminator = EditExtensions.GetDiscriminator(context.Request); ContentItem item; if (string.IsNullOrEmpty(discriminator)) { item = selected; var versions = engine.Resolve <VersionManager>(); if (item.State != ContentState.Draft) { item = versions.GetOrCreateDraft(item); } Update(requestBody, item); if (item.ID == 0 && item.VersionOf.HasValue) { versions.UpdateVersion(item); } else { engine.Persister.Repository.SaveOrUpdate(item); engine.Persister.Repository.Flush(); } } else { int id; if (requestBody.ContainsKey("ID") && (id = (int)requestBody["ID"]) != 0) { item = engine.Persister.Get(id); } else { item = engine.Resolve <IDefinitionManager>().GetDefinition(discriminator).CreateInstance(selected); item.State = ContentState.Draft; } Update(requestBody, item); bool itemNeedsResaveWithIdGeneratedName = string.IsNullOrEmpty(item.Name); engine.Persister.Repository.SaveOrUpdate(item); engine.Persister.Repository.Flush(); if (itemNeedsResaveWithIdGeneratedName) { engine.Persister.Repository.Flush(); } } context.Response.WriteJson(new { ID = item.VersionOf.ID ?? item.ID, VersionIndex = item.VersionIndex }); }