public HttpResponseMessage Update(JObject json) { try { var module = new OpenContentModuleInfo(ActiveModule); string editRole = module.Settings.Template.Manifest.GetEditRole(); int createdByUserid = -1; IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); IDataItem dsItem = null; if (module.IsListMode()) { if (json["id"] != null) { var itemId = json["id"].ToString(); dsItem = ds.Get(dsContext, itemId); if (dsItem != null) { createdByUserid = dsItem.CreatedByUserId; } } } else { dsContext.Single = true; dsItem = ds.Get(dsContext, null); if (dsItem != null) { createdByUserid = dsItem.CreatedByUserId; } } //todo: can't we do some of these checks at the beginning of this method to fail faster? if (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, editRole, createdByUserid)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } try { if (dsItem == null) { ds.Add(dsContext, json["form"] as JObject); } else { ds.Update(dsContext, dsItem, json["form"] as JObject); } } catch (DataNotValidException ex) { return(Request.CreateResponse(HttpStatusCode.OK, new { isValid = false, validMessage = ex.Message })); } if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.String) { string moduleTitle = json["form"]["ModuleTitle"].ToString(); OpenContentUtils.UpdateModuleTitle(ActiveModule, moduleTitle); } else if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.Object) { if (json["form"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()] != null) { string moduleTitle = json["form"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()].ToString(); OpenContentUtils.UpdateModuleTitle(ActiveModule, moduleTitle); } } return(Request.CreateResponse(HttpStatusCode.OK, new { isValid = true })); } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public HttpResponseMessage Update(JObject json) { try { bool index = false; OpenContentSettings settings = ActiveModule.OpenContentSettings(); ModuleInfo module = ActiveModule; if (settings.ModuleId > 0) { ModuleController mc = new ModuleController(); module = mc.GetModule(settings.ModuleId, settings.TabId, false); } var manifest = settings.Template.Manifest; TemplateManifest templateManifest = settings.Template; index = settings.Template.Manifest.Index; string editRole = manifest.GetEditRole(); bool listMode = templateManifest != null && templateManifest.IsListTemplate; int createdByUserid = -1; var ds = DataSourceManager.GetDataSource(manifest.DataSource); var dsContext = new DataSourceContext() { ModuleId = module.ModuleID, ActiveModuleId = ActiveModule.ModuleID, TemplateFolder = settings.TemplateDir.FolderPath, Index = index, UserId = UserInfo.UserID, PortalId = module.PortalID, Config = manifest.DataSourceConfig }; IDataItem dsItem = null; if (listMode) { if (json["id"] != null) { var itemId = json["id"].ToString(); dsItem = ds.Get(dsContext, itemId); //content = ctrl.GetContent(itemId); if (dsItem != null) { createdByUserid = dsItem.CreatedByUserId; } } } else { dsContext.Single = true; dsItem = ds.Get(dsContext, null); //dsItem = ctrl.GetFirstContent(module.ModuleID); if (dsItem != null) { createdByUserid = dsItem.CreatedByUserId; } } if (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, editRole, createdByUserid)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } //var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir); if (dsItem == null) { ds.Add(dsContext, json["form"] as JObject); } else { ds.Update(dsContext, dsItem, json["form"] as JObject); } if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.String) { string moduleTitle = json["form"]["ModuleTitle"].ToString(); OpenContentUtils.UpdateModuleTitle(ActiveModule, moduleTitle); } else if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.Object) { if (json["form"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()] != null) { string moduleTitle = json["form"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()].ToString(); OpenContentUtils.UpdateModuleTitle(ActiveModule, moduleTitle); } } return(Request.CreateResponse(HttpStatusCode.OK, "")); } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }