private void Save(System.Web.HttpContextBase context) { var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary <object>(); var user = GetUser(context.User); if (requestBody.ContainsKey("Settings") && requestBody["Settings"] is IDictionary <string, object> ) { user.Settings = (IDictionary <string, object>)requestBody["Settings"]; } repository.Save(user); context.Response.WriteJson(new { User = user }); }
private void Create(HttpContextBase context) { var parent = Selection.ParseSelectionFromRequest(); if (parent == null) throw new HttpException((int)HttpStatusCode.NotFound, "Not Found"); var discriminator = context.Request["discriminator"]; var definition = engine.Definitions.GetDefinition(discriminator); var item = engine.Resolve<ContentActivator>().CreateInstance(definition.ItemType, parent); var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary<object>(); foreach (var kvp in requestBody) item[kvp.Key] = kvp.Value; engine.Persister.Save(item); }
private void Update(HttpContextBase context) { var item = Selection.ParseSelectionFromRequest(); if (item == null) throw new HttpException((int)HttpStatusCode.NotFound, "Not Found"); var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary<object>(); foreach (var kvp in requestBody) item[kvp.Key] = kvp.Value; engine.Persister.Save(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); 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 }); }
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) }); }
private void Patch(HttpContextBase context) { var requestBody = context.GetOrDeserializeRequestStreamJsonDictionary<object>(); var user = GetUser(context.User); if (requestBody.ContainsKey("Settings") && requestBody["Settings"] is IDictionary<string, object>) foreach (var kvp in (IDictionary<string, object>)requestBody["Settings"]) { if (kvp.Value != null) user.Settings[kvp.Key] = kvp.Value; else user.Settings.Remove(kvp.Key); } repository.Save(user); context.Response.WriteJson(new { User = user }); }