public HttpResponseMessage Post(string entity, [FromBody] JObject value) { // Add try { var collection = entity; OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); var manifest = module.Settings.Template.Manifest; string editRole = manifest.GetEditRole(); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); dsContext.Collection = collection; if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, -1)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } ds.Add(dsContext, value.Properties().First().Value as JObject); return(Request.CreateResponse(HttpStatusCode.OK, "")); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
protected override void OnInit(EventArgs e) { base.OnInit(e); ModuleInfo module = ModuleContext.Configuration; if (App.Services.CreateGlobalSettingsRepository(ModuleContext.PortalId).GetAutoAttach()) { // auto attach a ContentLocalized OpenContent module to the reference module of the default language AutoAttachLocalizedModule(ref module); } _engine = new RenderEngine(OpenContentModuleConfig.Create(module, PortalSettings.Current), new DnnRenderContext(ModuleContext), LocalResourceFile); _renderinfo = _engine.Info; _settings = _engine.Settings; _engine.QueryString = Page.Request.QueryString; if (Page.Request.QueryString["id"] != null) { _engine.ItemId = Page.Request.QueryString["id"]; } //initialize TemplateInitControl TemplateInit ti = (TemplateInit)TemplateInitControl; ti.ModuleContext = ModuleContext; ti.Settings = _settings; ti.Renderinfo = _renderinfo; ti.ResourceFile = LocalResourceFile; }
public HttpResponseMessage Get(string entity) { try { var collection = entity; OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); var manifest = module.Settings.Manifest; if (manifest.AdditionalDataDefined(entity)) { var dataManifest = manifest.AdditionalDataDefinition[entity]; var res = new JObject(); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); dsContext.Collection = collection; var dsItem = ds.GetData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? entity); if (dsItem != null) { var json = dsItem.Data; res[entity] = json; } return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Get(entity, 0, 100, null, null)); } } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
private List <dynamic> GetDataAsListOfDynamics() { var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings); OpenContentController ctrl = new OpenContentController(ModuleContext.PortalId); var data = ctrl.GetContents(module.DataModule.ModuleId, "Submissions").OrderByDescending(c => c.CreatedOnDate); var dynData = new List <dynamic>(); foreach (var item in data) { dynamic o = new ExpandoObject(); var dict = (IDictionary <string, object>)o; o.CreatedOnDate = item.CreatedOnDate; o.Title = item.Title; //o.Json = item.Json; dynamic d = JsonUtils.JsonToDynamic(item.Json); //o.Data = d; Dictionary <String, Object> jdic = Dyn2Dict(d); foreach (var p in jdic) { dict[p.Key] = p.Value; } dynData.Add(o); } return(dynData); }
public static bool CheckIfEditable(this OpenContentModuleInfo dataModule, OpenContentModuleConfig ocModuleConfig) { bool isEditable; //first check some weird Dnn issue if (HttpContext.Current != null && HttpContext.Current.Request.IsAuthenticated) { var personalization = (PersonalizationInfo)HttpContext.Current.Items["Personalization"]; if (personalization != null && personalization.UserId == -1) { //this should never happen. //Let us make sure that the wrong value is no longer cached HttpContext.Current.Items.Remove("Personalization"); } } bool blnPreview = ocModuleConfig.PreviewEnabled; if (Globals.IsHostTab(ocModuleConfig.TabId)) { blnPreview = false; } bool blnHasModuleEditPermissions = dataModule.HasEditRightsOnModule(); if (blnPreview == false && blnHasModuleEditPermissions) { isEditable = true; } else { isEditable = false; } return(isEditable); }
private List <dynamic> GetDataAsListOfDynamics() { var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings); OpenContentController ctrl = new OpenContentController(ModuleContext.PortalId); var data = ctrl.GetContents(module.DataModule.ModuleId, "Submissions").OrderByDescending(c => c.CreatedOnDate); var dynData = new List <dynamic>(); foreach (var item in data) { dynamic o = new ExpandoObject(); var dict = (IDictionary <string, object>)o; o.CreatedOnDate = item.CreatedOnDate; o.Id = item.ContentId; o.Title = item.Title; try { dynamic d = JsonUtils.JsonToDynamic(item.Json); Dictionary <string, object> jdic = Dyn2Dict(d); foreach (var p in jdic) { dict[p.Key] = p.Value; } } catch (Exception e) { o.Error = $"Failed to Convert item [{item.ContentId}] to dynamic. Item.CreatedOnDate: {item.CreatedOnDate}"; } dynData.Add(o); } return(dynData); }
private static IEnumerable <IIndexableItem> GetModuleIndexableData(OpenContentModuleConfig module) { bool index = false; var settings = module.Settings; if (settings.TemplateAvailable) { index = settings.Manifest.Index; } if (!index) { return(null); } IDataSource ds = DataSourceManager.GetDataSource(settings.Manifest.DataSource); if (!(ds is IDataIndex)) { return(null); } var dsContext = OpenContentUtils.CreateDataContext(module); var dataIndex = (IDataIndex)ds; return(dataIndex.GetIndexableData(dsContext)); }
private JToken GenerateObject(string id, int tabId, int moduleId, bool onlyData) { var module = moduleId > 0 ? OpenContentModuleConfig.Create(moduleId, tabId, PortalSettings.Current) : _module; var ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module); IDataItem dataItem = ds.Get(dsContext, id); if (dataItem != null) { var json = dataItem?.Data?.DeepClone() as JObject; //if (!string.IsNullOrEmpty(dataMember)) //{ // json = json[dataMember]; //} if (json != null) { JsonUtils.SimplifyJson(json, GetCurrentCultureCode()); if (!onlyData) { var context = new JObject(); json["Context"] = context; context["Id"] = dataItem.Id; context["DetailUrl"] = GenerateDetailUrl(dataItem, json, module.Settings.Manifest, GetCurrentCultureCode(), tabId > 0 ? tabId : _detailTabId); } return(json); } } JObject res = new JObject(); res["Id"] = id; res["Title"] = "unknow"; return(res); }
private void SaveAdditionalData(string key) { var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings); OpenContentSettings settings = this.OpenContentSettings(); int modId = settings.IsOtherModule ? settings.ModuleId : ModuleId; var manifest = settings.Manifest; var dataManifest = manifest.GetAdditionalData(key); var ds = DataSourceManager.GetDataSource(manifest.DataSource); var dsContext = new DataSourceContext() { PortalId = PortalSettings.PortalId, CurrentCultureCode = DnnLanguageUtils.GetCurrentCultureCode(), TabId = TabId, ModuleId = modId, TabModuleId = this.TabModuleId, UserId = UserInfo.UserID, TemplateFolder = settings.TemplateDir.FolderPath, Config = manifest.DataSourceConfig, //Options = reqOptions }; var dsItem = ds.GetData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? key); if (dsItem == null) { ds.AddData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? key, JToken.Parse(txtSource.Text)); } else { ds.UpdateData(dsContext, dsItem, JToken.Parse(txtSource.Text)); } App.Services.CacheAdapter.SyncronizeCache(module); }
public HttpResponseMessage Get(string entity, string id) { try { //if (entity == "items") var collection = App.Config.DefaultCollection; OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); JObject reqOptions = null; if (module.IsListMode()) { var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.TemplateDir, collection); //bool isEditable = ActiveModule.CheckIfEditable(PortalSettings); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions); dsContext.Collection = collection; var dsItem = ds.Get(dsContext, id); var res = new JObject(); res["meta"] = new JObject(); var items = new JArray(); if (dsItem != null) { var mf = new ModelFactorySingle(dsItem, module, collection); string raison = ""; if (!OpenContentUtils.HaveViewPermissions(dsItem, module.UserRoles.FromDnnRoles(), indexConfig, out raison)) { Exceptions.ProcessHttpException(new HttpException(404, "No detail view permissions for id=" + id + " (" + raison + ")")); //throw new UnauthorizedAccessException("No detail view permissions for id " + info.DetailItemId); } mf.Options = reqOptions; var model = mf.GetModelAsJson(false); items.Add(model); model["id"] = dsItem.Id; res["meta"]["total"] = dsItem == null ? 0 : 1; JsonUtils.IdJson(model); if (LogContext.IsLogActive) { var logKey = "Query"; LogContext.Log(module.ViewModule.ModuleId, logKey, "model", model); res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(module.ViewModule.ModuleId)); } } res[entity] = items; return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template ")); } } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public RenderEngine(ModuleInfo moduleinfo) { var ocModuleConfig = OpenContentModuleConfig.Create(moduleinfo.ModuleID, moduleinfo.TabID, PortalSettings.Current); _module = ocModuleConfig; _renderinfo = new RenderInfo(_module.Settings.Template, _module.Settings.IsOtherModule); _settings = _module.Settings; }
public RenderEngine(OpenContentModuleConfig ocModuleConfig, IRenderContext renderContext, string localResourceFile) { _module = ocModuleConfig; _renderinfo = new RenderInfo(_module.Settings.Template, _module.Settings.IsOtherModule); _settings = _module.Settings; RenderContext = renderContext; ResourceFile = localResourceFile; }
private static bool ModuleHasAlreadyData(ModuleInfo moduleInfo) { OpenContentModuleConfig ocModuleConfig = OpenContentModuleConfig.Create(moduleInfo, PortalSettings.Current); IDataSource ds = DataSourceManager.GetDataSource(ocModuleConfig.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(ocModuleConfig); return(ds.Any(dsContext)); }
public HttpResponseMessage Put(string entity, string id, [FromBody] JObject value) { // update try { OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); 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 (id != null) { var itemId = id; 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; } } if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, createdByUserid)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } if (dsItem == null) { ds.Add(dsContext, value.Properties().First().Value as JObject); } else { ds.Update(dsContext, dsItem, value.Properties().First().Value as JObject); } App.Services.CacheAdapter.SyncronizeCache(module); return(Request.CreateResponse(HttpStatusCode.OK, "")); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public HttpResponseMessage Put(string entity, string id, string memberAction, [FromBody] JObject value) { // action try { var collection = entity; OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); 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); dsContext.Collection = collection; IDataItem dsItem = null; if (module.IsListMode()) { if (id != null) { var itemId = id; dsItem = ds.Get(dsContext, 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 (!DnnPermissionsUtils.HasEditPermissions(module, editRole, createdByUserid)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } //var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir); JToken res = null; if (dsItem != null) { res = ds.Action(dsContext, memberAction, dsItem, value); } return(Request.CreateResponse(HttpStatusCode.OK, res)); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
protected void cmdSaveDefault_Click(object sender, EventArgs e) { if (sourceList.SelectedValue == DATATYPE_DATA) { var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings); TemplateManifest template = module.Settings.Template; if (template != null) { var dataFilename = template.MainTemplateUri().PhysicalFullDirectory + "\\data.json"; if (template.IsListTemplate) { string itemId = Request.QueryString["id"]; if (!string.IsNullOrEmpty(itemId)) { File.WriteAllText(dataFilename, txtSource.Text); } else { JArray lst = null; if (!string.IsNullOrEmpty(txtSource.Text)) { lst = JArray.Parse(txtSource.Text); if (lst.Count > 0) { File.WriteAllText(dataFilename, lst[0].ToString()); } } } } else { File.WriteAllText(dataFilename, txtSource.Text); } } } else if (sourceList.SelectedValue == DATATYPE_SETTINGS) { var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings); TemplateManifest template = module.Settings.Template; var settingsFilename = template.MainTemplateUri().PhysicalFullDirectory + "\\" + template.Key.ShortKey + "-data.json"; File.WriteAllText(settingsFilename, txtSource.Text); } else if (sourceList.SelectedValue == DATATYPE_FILTER) { var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings); TemplateManifest template = module.Settings.Template; var settingsFilename = template.MainTemplateUri().PhysicalFullDirectory + "\\" + "filter-data.json"; File.WriteAllText(settingsFilename, txtSource.Text); } else { //SaveAdditionalData(sourceList.SelectedValue); } }
public static bool HasAllUsersViewPermissions(this OpenContentModuleConfig module) { bool blnHasModuleViewPermissions = false; if (module.ViewModule != null) { //DNN already checks SuperUser and Administrator blnHasModuleViewPermissions = ModulePermissionController.HasModuleAccess(AppDefinitions.SecurityAccessLevel.View.ToDnnSecurityAccessLevel(), "CONTENT", DnnUtils.GetDnnModule(module.ViewModule)); } return(blnHasModuleViewPermissions); }
public HttpResponseMessage Delete(string entity, string id) { try { OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); 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 (id != null) { var itemId = id; 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; } } if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, createdByUserid)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } //var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir); if (dsItem != null) { ds.Delete(dsContext, dsItem); } return(Request.CreateResponse(HttpStatusCode.OK, "")); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
protected ModelFactoryBase(string settingsJson, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleConfig module, int portalId, string cultureCode) { this._settingsJson = settingsJson; this._manifest = manifest; this._templateFiles = templateFiles; this._module = module; this._cultureCode = cultureCode; this._portalId = portalId; this._templateManifest = templateManifest; this._collection = templateManifest.Collection; this._detailTabId = DnnUtils.GetTabByCurrentCulture(this._portalId, module.GetDetailTabId(), GetCurrentCultureCode()); _ds = DataSourceManager.GetDataSource(_manifest.DataSource); _dsContext = OpenContentUtils.CreateDataContext(_module); }
private static void ReIndexIfNeeded(int moduleid, int tabid, int portalId) { var currentUserCount = UserController.GetUserCountByPortal(portalId); var userCountAtLastIndex = DnnUtils.GetPortalSetting("UserCountAtLastIndex", 0); if (currentUserCount != userCountAtLastIndex) { // reindex module data var module = OpenContentModuleConfig.Create(moduleid, tabid, null); LuceneUtils.ReIndexModuleData(module); DnnUtils.SetPortalSetting("UserCountAtLastIndex", currentUserCount); App.Services.Logger.Info("DnnUsers reindexed"); } }
public HttpResponseMessage Post(string entity, [FromBody] JObject value) { // Add try { OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); var manifest = module.Settings.Template.Manifest; string editRole = manifest.GetEditRole(); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, -1)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } ds.Add(dsContext, value.Properties().First().Value as JObject); var dsItem = ds.Get(dsContext, dsContext.Id); var res = new JObject(); res["meta"] = new JObject(); var items = new JArray(); if (dsItem != null) { var collection = App.Config.DefaultCollection; var mf = new ModelFactorySingle(dsItem, module, collection); var model = mf.GetModelAsJson(false); items.Add(model); model["id"] = dsContext.Id; res["meta"]["total"] = dsItem == null ? 0 : 1; JsonUtils.IdJson(model); if (LogContext.IsLogActive) { var logKey = "Query"; LogContext.Log(module.ViewModule.ModuleId, logKey, "model", model); res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(module.ViewModule.ModuleId)); } } res[entity] = items; return(Request.CreateResponse(HttpStatusCode.OK, res)); //return Request.CreateResponse(HttpStatusCode.OK, ""); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
protected ModelFactoryBase(OpenContentModuleConfig module, string collection) { OpenContentSettings settings = module.Settings; this._settingsJson = settings.Data; this._manifest = settings.Template.Manifest; this._templateFiles = settings.Template?.Main; this._module = module; this._portalId = module.PortalId; this._templateManifest = settings.Template; this._collection = collection; this._detailTabId = DnnUtils.GetTabByCurrentCulture(this._portalId, module.GetDetailTabId(), GetCurrentCultureCode()); _ds = DataSourceManager.GetDataSource(_manifest.DataSource); _dsContext = OpenContentUtils.CreateDataContext(_module); }
private static void RegisterModuleDataForIndexing(LuceneController lc, OpenContentModuleConfig module) { var indexableData = GetModuleIndexableData(module); var dataExample = indexableData?.ToList().FirstOrDefault(); if (dataExample == null) { return; } var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.Template); //todo index is being build from schema & options. But they should be provided by the provider, not directly from the files string scope = dataExample.GetScope(); lc.AddList(indexableData, indexConfig, scope); }
public static bool HasEditRole(OpenContentModuleConfig ocModuleConfig, string editrole, int createdByUserId) { if (String.IsNullOrEmpty(editrole)) { return(false); } if (editrole.ToLower() == "all") { return(true); } if (ocModuleConfig.IsInRole(editrole) && (createdByUserId == -1 || createdByUserId == ocModuleConfig.UserId)) { return(true); } return(false); }
private static void ReIndexIfNeeded(int moduleid, int tabid, int portalId) { if (PortalSettings.Current == null) { return; // we can not reindex even if we wanted, because we are not in a regular http context (maybe console? scheduler? ashx?) } var currentUserCount = UserController.GetUserCountByPortal(portalId); var userCountAtLastIndex = DnnUtils.GetPortalSetting("UserCountAtLastIndex", 0); if (currentUserCount != userCountAtLastIndex) { // reindex module data var module = OpenContentModuleConfig.Create(moduleid, tabid, null); LuceneUtils.ReIndexModuleData(module); DnnUtils.SetPortalSetting("UserCountAtLastIndex", currentUserCount); App.Services.Logger.Info("DnnUsers reindexed"); } }
public HttpResponseMessage Get(string entity) { try { OpenContentModuleConfig module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings); var manifest = module.Settings.Manifest; TemplateManifest templateManifest = module.Settings.Template; if (manifest.AdditionalDataDefined(entity)) { var dataManifest = manifest.AdditionalDataDefinition[entity]; //string scope = AdditionalDataUtils.GetScope(dataManifest, PortalSettings.PortalId, ActiveModule.TabID, module.ModuleID, ActiveModule.TabModuleID); //var templateFolder = string.IsNullOrEmpty(dataManifest.TemplateFolder) ? settings.TemplateDir : settings.TemplateDir.ParentFolder.Append(dataManifest.TemplateFolder); //var fb = new FormBuilder(templateFolder); //JObject json = fb.BuildForm(entity); var res = new JObject(); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); var dsItem = ds.GetData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? entity); if (dsItem != null) { var json = dsItem.Data; JsonUtils.IdJson(json); res[entity] = json; } return(Request.CreateResponse(HttpStatusCode.OK, res)); } else { return(Get(entity, 0, 100, null, null)); } } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public HttpResponseMessage GetExcel(int moduleId, int tabId, string template, string fileName) { IEnumerable <IDataItem> dataList = new List <IDataItem>(); var module = OpenContentModuleConfig.Create(moduleId, tabId, PortalSettings); var manifest = module.Settings.Template.Manifest; if (!module.HasAllUsersViewPermissions()) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } bool useLucene = module.Settings.Template.Manifest.Index; if (useLucene) { var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.Template); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); queryBuilder.Build(module.Settings.Query, PortalSettings.UserMode != PortalSettings.Mode.Edit, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles.FromDnnRoles()); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); var dsItems = ds.GetAll(dsContext, queryBuilder.Select); dataList = dsItems.Items; } var mf = new ModelFactoryMultiple(dataList, null, manifest, null, null, module); dynamic model = mf.GetModelAsDictionary(true); var rssTemplate = new FileUri(module.Settings.TemplateDir, template + ".hbs"); string source = rssTemplate.FileExists ? FileUriUtils.ReadFileFromDisk(rssTemplate) : GenerateTemplateFromModel(model, rssTemplate); HandlebarsEngine hbEngine = new HandlebarsEngine(); string res = hbEngine.Execute(source, model); var fileBytes = ExcelUtils.CreateExcel(res); return(ExcelUtils.CreateExcelResponseMessage(fileName, fileBytes)); }
public HttpResponseMessage GetFeed(int moduleId, int tabId, string template, string mediaType) { IEnumerable <IDataItem> dataList = new List <IDataItem>(); var module = OpenContentModuleConfig.Create(moduleId, tabId, PortalSettings); var manifest = module.Settings.Template.Manifest; if (!module.HasAllUsersViewPermissions()) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } var rssTemplate = new FileUri(module.Settings.TemplateDir, template + ".hbs"); string source = File.ReadAllText(rssTemplate.PhysicalFilePath); bool useLucene = module.Settings.Template.Manifest.Index; if (useLucene) { var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.Template); QueryBuilder queryBuilder = new QueryBuilder(indexConfig); queryBuilder.Build(module.Settings.Query, PortalSettings.UserMode != PortalSettings.Mode.Edit, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles.FromDnnRoles()); IDataSource ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID); var dsItems = ds.GetAll(dsContext, queryBuilder.Select); dataList = dsItems.Items; } var mf = new ModelFactoryMultiple(dataList, null, manifest, null, null, module); dynamic model = mf.GetModelAsDictionary(false, true); HandlebarsEngine hbEngine = new HandlebarsEngine(); string res = hbEngine.Execute(source, model); var response = new HttpResponseMessage(); response.Content = new StringContent(res); response.Content.Headers.ContentType = new MediaTypeHeaderValue(mediaType); return(response); }
private void GetDetailData(RenderInfo info, OpenContentModuleConfig module) { info.ResetData(); var ds = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource); var dsContext = OpenContentUtils.CreateDataContext(module); var dsItem = ds.Get(dsContext, info.DetailItemId); //if (LogContext.IsLogActive) //{ // var logKey = "Get detail data"; // LogContext.Log(_module.ModuleID, logKey, "debuginfo", dsItems.DebugInfo); //} if (dsItem != null) { //check permissions bool isEditable = _module.ViewModule.CheckIfEditable(module); if (!isEditable) { var indexConfig = OpenContentUtils.GetIndexConfig(info.Template); string raison; if (!OpenContentUtils.HaveViewPermissions(dsItem, module.UserRoles.FromDnnRoles(), indexConfig, out raison)) { App.Services.Logger.Error($"Error accessing {HttpContext.Current?.Request?.Url?.AbsoluteUri}. Referrer {HttpContext.Current?.Request?.UrlReferrer?.AbsoluteUri}"); if (module.ViewModule.HasEditRightsOnModule()) { throw new NotAuthorizedException(404, $"No detail view permissions for id={info.DetailItemId} (due to {raison}) \nGo into Edit Mode to view/change the item."); } else { throw new NotAuthorizedException(404, $"Access denied. You might want to contact your administrator for more information. (due to {raison})"); } } } info.SetData(dsItem, dsItem.Data, module.Settings.Data); } }
private static bool ModuleHasValidConfig(ModuleInfo moduleInfo) { OpenContentModuleConfig ocModuleConfig = OpenContentModuleConfig.Create(moduleInfo, PortalSettings.Current); return(ocModuleConfig.Settings.Manifest != null); }