public HttpResponseMessage UpdateData(JObject json) { try { var module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); string key = json["key"].ToString(); var dataManifest = module.Settings.Template.Manifest.GetAdditionalData(key); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); var dsItem = ds.GetData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? key); if (dsItem == null) { ds.AddData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? key, json["form"]); } else { ds.UpdateData(dsContext, dsItem, json["form"]); } return(Request.CreateResponse(HttpStatusCode.OK, new { isValid = true })); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public void Import(string filename, bool importTemplate, bool importData, bool importAdditionalData, bool importSettings) { // unzip all string allStartPath = ModuleImportDirectory; string allZipPath = ImportDirectory + filename; if (Directory.Exists(allStartPath)) { Directory.Delete(allStartPath, true); } ZipFile.ExtractToDirectory(allZipPath, allStartPath); var export = JObject.Parse(File.ReadAllText(ModuleImportDirectory + "export.json")); Files = export["Files"] as JObject; // unzip template if (importTemplate) { string startPath = HostingEnvironment.MapPath("~/" + PortalSettings.HomeDirectory + "OpenContent/Templates/" + export["Name"]); if (!Directory.Exists(startPath)) { Directory.CreateDirectory(startPath); } string zipPath = ModuleImportDirectory + export["Name"] + ".zip"; if (Directory.Exists(startPath)) { Directory.Delete(startPath, true); } ZipFile.ExtractToDirectory(zipPath, startPath); } if (importSettings) { ModuleController mc = new ModuleController(); mc.UpdateModuleSetting(ModuleId, "template", export["Template"].ToString() .Replace("Portals/" + export["PortalId"] + "/", "Portals/" + PortalId + "/")); //.Replace("[PORTALID]", PortalId.ToString())); if (export["Settings"] != null) { mc.UpdateModuleSetting(ModuleId, "data", export["Settings"].ToString()); } mc.UpdateModuleSetting(ModuleId, "query", export["Query"].ToString()); DataCache.ClearCache(); } var module = OpenContentModuleConfig.Create(ModuleId, TabId, PortalSettings); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module); if (importData) { var alpaca = ds.GetAlpaca(dsContext, true, true, false); var data = JToken.Parse(File.ReadAllText(ModuleImportDirectory + "data.json")); if (module.IsListMode()) { var dataList = ds.GetAll(dsContext, null).Items; foreach (var item in dataList) { ds.Delete(dsContext, item); } if (data is JArray) { foreach (JObject json in data) { ds.Add(dsContext, ImportTraverse(alpaca, json)); } } } else { var dsItem = ds.Get(dsContext, null); data = ImportTraverse(alpaca, data); if (dsItem == null) { ds.Add(dsContext, data); } else { ds.Update(dsContext, dsItem, data); } } } if (importAdditionalData && module.Settings.Manifest.AdditionalDataDefinition != null) { foreach (var item in module.Settings.Manifest.AdditionalDataDefinition) { var alpaca = ds.GetDataAlpaca(dsContext, true, true, false, item.Key); var dataFile = ModuleImportDirectory + item.Key + ".json"; if (File.Exists(dataFile)) { var data = JToken.Parse(File.ReadAllText(dataFile)); var dsItem = ds.GetData(dsContext, item.Value.ScopeType, item.Key); data = ImportTraverse(alpaca, data); if (dsItem == null) { ds.AddData(dsContext, item.Value.ScopeType, item.Key, data); } else { ds.UpdateData(dsContext, dsItem, data); } } } } //Directory.Delete(allStartPath, true); }