示例#1
0
        public FileProcessingResult Process(string path)
        {
            var isFileNameFlushed = false;
            var result            = new FileProcessingResult {
                FileName = path
            };

            foreach (var line in File.ReadLines(path))
            {
                result.TotalLineCount++;
                if (linePattern.IsMatch(line))
                {
                    if (!isFileNameFlushed)
                    {
                        LogContext.Log(path);
                        isFileNameFlushed = true;
                    }
                    LogContext.Log($" ---> {line.Trim()}");
                    foreach (Match match in argPattern.Matches(line))
                    {
                        result.ReplacedLineCount++;
                        LogContext.Log(match.Groups["arg"].Value);
                    }
                }
            }

            return(result);
        }
示例#2
0
        private string ExecuteTemplate(Page page, TemplateManifest templateManifest, TemplateFiles files, FileUri templateUri, object model)
        {
            var       templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;
            string    output;
            Stopwatch stopwatch = null;

            if (LogContext.IsLogActive)
            {
                var logKey = "Render template";
                LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", templateUri.FilePath);
                LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model);
                stopwatch = new Stopwatch();
                stopwatch.Start();
            }
            if (templateUri.Extension != ".hbs")
            {
                output = ExecuteRazor(templateUri, model);
            }
            else
            {
                HandlebarsEngine hbEngine = new HandlebarsEngine();
                output = hbEngine.Execute(page, files, templateVirtualFolder, model);
            }
            if (stopwatch != null)
            {
                stopwatch.Stop();
                var logKey = "Render template";
                LogContext.Log(_module.ViewModule.ModuleID, logKey, "render time (ms)", stopwatch.ElapsedMilliseconds);
                stopwatch.Stop();
            }
            return(output);
        }
示例#3
0
        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));
            }
        }
示例#4
0
        private string GenerateOutputSingle(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files)
        {
            if (template != null)
            {
                if (dataJson != null)
                {
                    ModelFactorySingle mf;

                    if (_renderinfo.Data == null)
                    {
                        // demo data
                        mf = new ModelFactorySingle(_renderinfo.DataJson, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module);
                    }
                    else
                    {
                        mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module);
                    }
                    if (template.Extension != ".hbs") // razor
                    {
                        dynamic model = mf.GetModelAsDynamic();
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "model", model);
                        }
                        return(ExecuteRazor(template, model));
                    }
                    else // handlebars
                    {
                        object model;
                        if (!App.Services.CreateGlobalSettingsRepository(PortalSettings.Current.PortalId).GetLegacyHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "model", model);
                        }
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        return(hbEngine.Execute(page, template, model));
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
 private void RenderJsonException(InvalidJsonFileException ex, ModuleInfo module)
 {
     DotNetNuke.UI.Skins.Skin.AddModuleMessage(Page, "OpenContent RenderModule SkinObject", "<p><b>Json error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
     if (LogContext.IsLogActive)
     {
         var logKey = "Error in json";
         LogContext.Log(module.ModuleID, logKey, "Error", ex.MessageAsList());
         LogContext.Log(module.ModuleID, logKey, "Filename", ex.Filename);
     }
     LoggingUtils.ProcessLogFileException(this, module, ex);
 }
示例#6
0
 private void RenderHttpException(NotAuthorizedException ex)
 {
     DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Permission error</b></p>" + ex.Message.Replace("\n", "<br />"), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
     if (LogContext.IsLogActive)
     {
         var logKey = "Error accessing data";
         LogContext.Log(ModuleContext.ModuleId, logKey, "Error", ex.MessageAsList());
         //LogContext.Log(logKey, "StackTrace", ex.StackTrace);
         //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p>More info is availale on de browser console (F12)</p>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);
     }
     LoggingUtils.ProcessLogFileException(this, ex);
 }
 private void RenderTemplateException(TemplateException ex, ModuleInfo module)
 {
     DotNetNuke.UI.Skins.Skin.AddPageMessage(Page, "OpenContent RenderModule SkinObject", "<p><b>Template error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
     if (LogContext.IsLogActive)
     {
         var logKey = "Error in tempate";
         LogContext.Log(module.ModuleID, logKey, "Error", ex.MessageAsList());
         LogContext.Log(module.ModuleID, logKey, "Model", ex.TemplateModel);
         LogContext.Log(module.ModuleID, logKey, "Source", ex.TemplateSource);
     }
     LoggingUtils.ProcessLogFileException(this, module, ex);
 }
示例#8
0
 private void RenderJsonException(InvalidJsonFileException ex)
 {
     DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Json error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
     if (LogContext.IsLogActive)
     {
         var logKey = "Error in json";
         LogContext.Log(ModuleContext.ModuleId, logKey, "Error", ex.MessageAsList());
         LogContext.Log(ModuleContext.ModuleId, logKey, "Filename", ex.Filename);
         //LogContext.Log(logKey, "StackTrace", ex.StackTrace);
         //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p>More info is availale on de browser console (F12)</p>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);
     }
     LoggingUtils.ProcessLogFileException(this, ex);
 }
        public HttpResponseMessage Post(string entity, [FromBody] JObject value)
        {
            // Add
            try
            {
                OpenContentModuleInfo module = new OpenContentModuleInfo(ActiveModule);

                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 (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, 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 = AppConfig.DEFAULT_COLLECTION;
                    var mf         = new ModelFactorySingle(dsItem, module, PortalSettings, 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)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
示例#10
0
        private string GenerateOutput(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files)
        {
            var ps = PortalSettings.Current;

            if (template != null)
            {
                string templateVirtualFolder  = template.UrlFolder;
                string physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                if (dataJson != null)
                {
                    ModelFactory mf;
                    int          mainTabId = _settings.DetailTabId > 0 ? _settings.DetailTabId : _settings.TabId;
                    if (_renderinfo.Data == null)
                    {
                        // demo data
                        mf = new ModelFactory(_renderinfo.DataJson, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, ps, mainTabId, _settings.ModuleId);
                    }
                    else
                    {
                        mf = new ModelFactory(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, ps, mainTabId, _settings.ModuleId);
                    }
                    dynamic model = mf.GetModelAsDynamic();
                    if (LogContext.IsLogActive)
                    {
                        var logKey = "Render single item template";
                        LogContext.Log(_module.ModuleID, logKey, "template", template.FilePath);
                        LogContext.Log(_module.ModuleID, logKey, "model", model);
                    }

                    if (template.Extension != ".hbs")
                    {
                        return(ExecuteRazor(template, model));
                    }
                    else
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        return(hbEngine.Execute(page, template, model));
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
        public virtual IDataItem Get(DataSourceContext context, string id)
        {
            OpenContentController ctrl    = new OpenContentController(context.PortalId);
            OpenContentInfo       content = null;

            if (!string.IsNullOrEmpty(id) && id != "-1")
            {
                /*
                 * if (LogContext.IsLogActive)
                 * {
                 *  LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}", Name, id));
                 * }
                 */
                content = ctrl.GetContent(GetModuleId(context), context.Collection, id);
            }
            else
            {
                /*
                 * if (LogContext.IsLogActive)
                 * {
                 *  LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}. Returning first item of module.", Name, id));
                 * }
                 */
                content = ctrl.GetFirstContent(GetModuleId(context)); // single item
            }
            if (content == null)
            {
                App.Services.Logger.Warn($"Item not shown because no content item found. Id [{id}]. Context TabId: [{GetTabId(context)}], ModuleId: [{GetModuleId(context)}]");
                LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", "not item found with id " + id);
            }
            else if (content.ModuleId == GetModuleId(context) && content.Collection == context.Collection)
            {
                var dataItem = CreateDefaultDataItem(content);
                if (LogContext.IsLogActive)
                {
                    LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", dataItem.Data);
                }
                return(dataItem);
            }
            else
            {
                if (LogContext.IsLogActive)
                {
                    LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", $"no item returned as incompatible module ids {content.ModuleId}-{GetModuleId(context)}");
                }
            }
            return(null);
        }
        private static SelectQueryDefinition BuildQuery(DataSourceContext context, Select selectQuery)
        {
            SelectQueryDefinition def = new SelectQueryDefinition();

            def.Build(selectQuery);
            if (LogContext.IsLogActive)
            {
                var logKey = "Lucene query";
                LogContext.Log(context.ActiveModuleId, logKey, "Filter", def.Filter.ToString());
                LogContext.Log(context.ActiveModuleId, logKey, "Query", def.Query.ToString());
                LogContext.Log(context.ActiveModuleId, logKey, "Sort", def.Sort.ToString());
                LogContext.Log(context.ActiveModuleId, logKey, "PageIndex", def.PageIndex);
                LogContext.Log(context.ActiveModuleId, logKey, "PageSize", def.PageSize);
            }

            return(def);
        }
示例#13
0
 private void RenderTemplateException(TemplateException ex)
 {
     DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Template error</b></p>" + ex.MessageAsHtml(), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
     //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Template source</b></p>" + Server.HtmlEncode(ex.TemplateSource).Replace("\n", "<br/>"), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);
     //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p><b>Template model</b></p> <pre>" + JsonConvert.SerializeObject(ex.TemplateModel, Formatting.Indented)/*.Replace("\n", "<br/>")*/+"</pre>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);
     //lErrorMessage.Text = ex.HtmlMessage;
     //lErrorModel.Text = "<pre>" + JsonConvert.SerializeObject(ex.TemplateModel, Formatting.Indented)/*.Replace("\n", "<br/>")*/+"</pre>";
     if (LogContext.IsLogActive)
     {
         var logKey = "Error in tempate";
         LogContext.Log(ModuleContext.ModuleId, logKey, "Error", ex.MessageAsList());
         LogContext.Log(ModuleContext.ModuleId, logKey, "Model", ex.TemplateModel);
         LogContext.Log(ModuleContext.ModuleId, logKey, "Source", ex.TemplateSource);
         //LogContext.Log(logKey, "StackTrace", ex.StackTrace);
         //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "<p>More info is availale on de browser console (F12)</p>", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);
     }
     LoggingUtils.ProcessLogFileException(this, ex);
 }
        public virtual IDataItems GetAll(DataSourceContext context, Select select)
        {
            if (select == null)
            {
                return(GetAll(context));
            }
            else
            {
                OpenContentController ctrl = new OpenContentController();
                SelectQueryDefinition def  = new SelectQueryDefinition();
                def.Build(@select);
                if (LogContext.IsLogActive)
                {
                    var logKey = "Lucene query";
                    LogContext.Log(context.ActiveModuleId, logKey, "Filter", def.Filter.ToString());
                    LogContext.Log(context.ActiveModuleId, logKey, "Query", def.Query.ToString());
                    LogContext.Log(context.ActiveModuleId, logKey, "Sort", def.Sort.ToString());
                    LogContext.Log(context.ActiveModuleId, logKey, "PageIndex", def.PageIndex);
                    LogContext.Log(context.ActiveModuleId, logKey, "PageSize", def.PageSize);
                }

                SearchResults docs     = LuceneController.Instance.Search(GetModuleId(context).ToString(), def.Filter, def.Query, def.Sort, def.PageSize, def.PageIndex);
                int           total    = docs.TotalResults;
                var           dataList = new List <IDataItem>();
                foreach (string item in docs.ids)
                {
                    var content = ctrl.GetContent(int.Parse(item));
                    if (content != null)
                    {
                        dataList.Add(CreateDefaultDataItem(content));
                    }
                    else
                    {
                        Log.Logger.DebugFormat("OpenContentDataSource.GetAll() ContentItem not found [{0}]", item);
                    }
                }
                return(new DefaultDataItems()
                {
                    Items = dataList,
                    Total = total,
                    DebugInfo = def.Filter.ToString() + " - " + def.Query.ToString() + " - " + def.Sort.ToString()
                });
            }
        }
        /// <summary>
        /// Gets additional/related data of a datasource.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="scope">The Scope. (portal, tab, module, tabmodule)</param>
        /// <param name="key">The unique key in the scope</param>
        /// <returns></returns>
        public virtual IDataItem GetData(DataSourceContext context, string scope, string key)
        {
            string scopeStorage = AdditionalDataUtils.GetScope(scope, context.PortalId, context.TabId, GetModuleId(context), context.TabModuleId);
            var    dc           = new AdditionalDataController();
            var    data         = dc.GetData(scopeStorage, key);

            if (data != null)
            {
                var dataItem = new DefaultDataItem
                {
                    Data            = data.Json.ToJObject("GetContent " + scope + "/" + key),
                    CreatedByUserId = data.CreatedByUserId,
                    Item            = data
                };
                LogContext.Log(context.ActiveModuleId, "Get Data", "Result", dataItem);
                return(dataItem);
            }
            return(null);
        }
示例#16
0
        private string ExecuteTemplate(Page page, TemplateManifest templateManifest, TemplateFiles files, FileUri templateUri, dynamic model)
        {
            var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;

            if (LogContext.IsLogActive)
            {
                var logKey = "Render template";
                LogContext.Log(_module.ModuleID, logKey, "template", templateUri.FilePath);
                LogContext.Log(_module.ModuleID, logKey, "model", model);
            }
            if (templateUri.Extension != ".hbs")
            {
                return(ExecuteRazor(templateUri, model));
            }
            else
            {
                HandlebarsEngine hbEngine = new HandlebarsEngine();
                return(hbEngine.Execute(page, files, templateVirtualFolder, model));
            }
        }
        public virtual IDataItem Get(DataSourceContext context, string id)
        {
            OpenContentController ctrl    = new OpenContentController();
            OpenContentInfo       content = null;

            if (!string.IsNullOrEmpty(id) && id != "-1")
            {
                LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}", Name, id));
                int idint;
                if (int.TryParse(id, out idint))
                {
                    content = ctrl.GetContent(idint);
                }
            }
            else
            {
                LogContext.Log(context.ActiveModuleId, "Get DataItem", "Request", string.Format("{0}.Get() with id {1}. Returning first item of module.", Name, id));
                content = ctrl.GetFirstContent(GetModuleId(context)); // single item
            }
            if (content == null)
            {
                Log.Logger.WarnFormat("Item not shown because no content item found. Id [{0}]. Context TabId: [{1}], ModuleId: [{2}]", id, GetTabId(context), GetModuleId(context));
                LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", "not item found with id " + id);
            }
            else if (content.ModuleId == GetModuleId(context))
            {
                var dataItem = CreateDefaultDataItem(content);
                LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", dataItem);
                return(dataItem);
            }
            else
            {
                LogContext.Log(context.ActiveModuleId, "Get DataItem", "Result", string.Format("no item returned as incompatible module ids {0}-{1}", content.ModuleId, GetModuleId(context)));
            }
            return(null);
        }
示例#18
0
        public void GetDetailData(RenderInfo info, OpenContentSettings settings)
        {
            info.ResetData();
            var ds        = DataSourceManager.GetDataSource(settings.Manifest.DataSource);
            var dsContext = new DataSourceContext()
            {
                ModuleId       = info.ModuleId,
                ActiveModuleId = _module.ModuleID,
                TemplateFolder = settings.TemplateDir.FolderPath,
                Config         = settings.Manifest.DataSourceConfig
            };
            var dsItem = ds.Get(dsContext, info.DetailItemId);

            if (LogContext.IsLogActive)
            {
                var logKey = "Get detail data";
                LogContext.Log(_module.ModuleID, logKey, "result", dsItem);
            }

            if (dsItem != null)
            {
                info.SetData(dsItem, dsItem.Data, settings.Data);
            }
        }
示例#19
0
        public FileProcessingResult Process(string path)
        {
            var isFileNameFlushed = false;
            var result            = new FileProcessingResult {
                FileName = path
            };

            foreach (var line in File.ReadLines(path))
            {
                result.TotalLineCount++;
                if (pattern.IsMatch(line))
                {
                    result.ReplacedLineCount++;
                    if (!isFileNameFlushed)
                    {
                        LogContext.Log(path);
                        isFileNameFlushed = true;
                    }
                    LogContext.Log(line);
                }
            }

            return(result);
        }
示例#20
0
        public HttpResponseMessage List(RequestDTO req)
        {
            try
            {
                OpenContentModuleInfo module = new OpenContentModuleInfo(ActiveModule);
                JObject reqOptions           = null;
                if (!string.IsNullOrEmpty(req.options))
                {
                    reqOptions = JObject.Parse(req.options);
                }
                if (module.IsListMode())
                {
                    var          indexConfig  = OpenContentUtils.GetIndexConfig(module.Settings.Template);
                    QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                    bool         isEditable   = ActiveModule.CheckIfEditable(PortalSettings);
                    queryBuilder.Build(module.Settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles);

                    JplistQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, req.StatusLst, DnnLanguageUtils.GetCurrentCultureCode());
                    IDataItems dsItems;
                    if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty)
                    {
                        dsItems = new DefaultDataItems()
                        {
                            Items = new List <DefaultDataItem>(),
                            Total = 0
                        };
                    }
                    else
                    {
                        IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                        var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions);
                        dsItems = ds.GetAll(dsContext, queryBuilder.Select);
                    }
                    var mf = new ModelFactoryMultiple(dsItems.Items, module, PortalSettings);
                    mf.Options = reqOptions;
                    var model = mf.GetModelAsJson(false, req.onlyItems);

                    //model["luceneQuery"] = dsItems.DebugInfo;
                    if (LogContext.IsLogActive)
                    {
                        LogContext.Log(ActiveModule.ModuleID, "RequestContext", "IsEditable", isEditable);
                        LogContext.Log(ActiveModule.ModuleID, "RequestContext", "UserRoles", PortalSettings.UserInfo.Social.Roles.Select(r => r.RoleName));
                        LogContext.Log(ActiveModule.ModuleID, "RequestContext", "CurrentUserId", PortalSettings.UserId);
                        var logKey = "Query";
                        LogContext.Log(ActiveModule.ModuleID, logKey, "select", queryBuilder.Select);
                        LogContext.Log(ActiveModule.ModuleID, logKey, "debuginfo", dsItems.DebugInfo);
                        LogContext.Log(ActiveModule.ModuleID, logKey, "model", model);
                        model["Logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(ActiveModule.ModuleID));
                    }
                    var res = new ResultDTO()
                    {
                        data  = model,
                        count = dsItems.Total
                    };
                    return(Request.CreateResponse(HttpStatusCode.OK, res));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template "));
                }
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
示例#21
0
 }                                             // Only for Dnn Razor helpers
 public void Render(Page page)
 {
     _renderinfo.Template = _settings.Template;
     if (_settings.TabId > 0 && _settings.ModuleId > 0) // other module
     {
         ModuleController mc = new ModuleController();
         _renderinfo.SetDataSourceModule(_settings.TabId, _settings.ModuleId, mc.GetModule(_renderinfo.ModuleId, _renderinfo.TabId, false), null, "");
     }
     else // this module
     {
         _renderinfo.SetDataSourceModule(_settings.TabId, _module.ModuleID, _module, null, "");
     }
     //start rendering
     if (_settings.Template != null)
     {
         if (!_settings.Template.DataNeeded())
         {
             _renderinfo.SetData(null, new JObject(), _settings.Data);
             _renderinfo.OutputString = GenerateOutput(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main);
         }
         else if (_renderinfo.Template.IsListTemplate)
         {
             LogContext.Log(_module.ModuleID, "RequestContext", "QueryParam Id", ItemId);
             // Multi items template
             if (string.IsNullOrEmpty(ItemId))
             {
                 // List template
                 if (_renderinfo.Template.Main != null)
                 {
                     // for list templates a main template need to be defined
                     _renderinfo.Files = _renderinfo.Template.Main;
                     string templateKey = GetDataList(_renderinfo, _settings, _renderinfo.Template.ClientSideData);
                     if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey))
                     {
                         _renderinfo.Files = _renderinfo.Template.Views[templateKey];
                     }
                     if (!_renderinfo.SettingsMissing)
                     {
                         _renderinfo.OutputString = GenerateListOutput(page, _settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson);
                     }
                 }
             }
             else
             {
                 // detail template
                 if (_renderinfo.Template.Detail != null)
                 {
                     GetDetailData(_renderinfo, _settings);
                 }
                 if (_renderinfo.Template.Detail != null && !_renderinfo.ShowInitControl)
                 {
                     _renderinfo.Files        = _renderinfo.Template.Detail;
                     _renderinfo.OutputString = GenerateOutput(page, _settings.Template, _renderinfo.Template.Detail, _renderinfo.DataJson, _renderinfo.SettingsJson);
                 }
                 else // if itemid not corresponding to this module, show list template
                 {
                     // List template
                     if (_renderinfo.Template.Main != null)
                     {
                         // for list templates a main template need to be defined
                         _renderinfo.Files = _renderinfo.Template.Main;
                         string templateKey = GetDataList(_renderinfo, _settings, _renderinfo.Template.ClientSideData);
                         if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey))
                         {
                             _renderinfo.Files = _renderinfo.Template.Views[templateKey];
                         }
                         if (!_renderinfo.ShowInitControl)
                         {
                             _renderinfo.OutputString = GenerateListOutput(page, _settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson);
                         }
                     }
                 }
             }
         }
         else
         {
             // single item template
             GetSingleData(_renderinfo, _settings);
             bool settingsNeeded = _renderinfo.Template.SettingsNeeded();
             if (!_renderinfo.ShowInitControl && (!settingsNeeded || !string.IsNullOrEmpty(_renderinfo.SettingsJson)))
             {
                 _renderinfo.OutputString = GenerateOutput(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main);
             }
         }
     }
 }
示例#22
0
        private string GetDataList(RenderInfo info, OpenContentModuleConfig ocModuleConfig)
        {
            var    clientSide  = info.Template.ClientSideData;
            string templateKey = "";

            info.ResetData();

            IDataSource ds        = DataSourceManager.GetDataSource(_settings.Manifest.DataSource);
            var         dsContext = OpenContentUtils.CreateDataContext(ocModuleConfig);

            IEnumerable <IDataItem> resultList = new List <IDataItem>();

            if (clientSide || !info.Files.DataInTemplate)
            {
                if (ds.Any(dsContext))
                {
                    info.SetData(resultList, ocModuleConfig.Settings.Data);
                    info.DataExist = true;
                }

                if (info.Template.Views != null)
                {
                    var indexConfig = OpenContentUtils.GetIndexConfig(info.Template);
                    templateKey = GetTemplateKey(indexConfig);
                }
            }
            else
            {
                //server side
                bool useLucene = info.Template.Manifest.Index;
                if (useLucene)
                {
                    var indexConfig = OpenContentUtils.GetIndexConfig(info.Template);
                    if (info.Template.Views != null)
                    {
                        templateKey = GetTemplateKey(indexConfig);
                    }
                    bool         isEditable   = _module.ViewModule.CheckIfEditable(ocModuleConfig);
                    QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                    queryBuilder.Build(ocModuleConfig.Settings.Query, !isEditable, ocModuleConfig.UserId, DnnLanguageUtils.GetCurrentCultureCode(), ocModuleConfig.UserRoles.FromDnnRoles(), QueryString);

                    resultList = ds.GetAll(dsContext, queryBuilder.Select).Items;
                    if (LogContext.IsLogActive)
                    {
                        //LogContext.Log(_module.ModuleID, "RequestContext", "EditMode", !addWorkFlow);
                        LogContext.Log(_module.ViewModule.ModuleId, "RequestContext", "IsEditable", isEditable);
                        LogContext.Log(_module.ViewModule.ModuleId, "RequestContext", "UserRoles", ocModuleConfig.UserRoles.Select(r => r.RoleName));
                        LogContext.Log(_module.ViewModule.ModuleId, "RequestContext", "CurrentUserId", ocModuleConfig.UserId);
                        var logKey = "Query";
                        LogContext.Log(_module.ViewModule.ModuleId, logKey, "select", queryBuilder.Select);
                        //LogContext.Log(_module.ModuleID, logKey, "result", resultList);
                    }
                    //App.Services.Logger.Debug($"Query returned [{0}] results.", total);
                    if (!resultList.Any())
                    {
                        //App.Services.Logger.Debug($"Query did not return any results. API request: [{0}], Lucene Filter: [{1}], Lucene Query:[{2}]", settings.Query, queryDef.Filter == null ? "" : queryDef.Filter.ToString(), queryDef.Query == null ? "" : queryDef.Query.ToString());
                        if (ds.Any(dsContext))
                        {
                            info.SetData(resultList, ocModuleConfig.Settings.Data);
                            info.DataExist = true;
                        }
                    }
                }
                else
                {
                    resultList = ds.GetAll(dsContext, null).Items;
                    //if (LogContext.IsLogActive)
                    //{
                    //    var logKey = "Get all data of module";
                    //    LogContext.Log(_module.ModuleID, logKey, "result", resultList);
                    //}
                }
                if (resultList.Any())
                {
                    info.SetData(resultList, ocModuleConfig.Settings.Data);
                }
            }
            return(templateKey);
        }
示例#23
0
 public HttpResponseMessage Get(string entity, string id)
 {
     try
     {
         //int ModuleId = int.Parse(Request.Headers.GetValues("ModuleId").First());
         //int TabId = int.Parse(Request.Headers.GetValues("TabId").First());
         ModuleController    mc           = new ModuleController();
         ModuleInfo          activeModule = ActiveModule; //mc.GetModule(ModuleId, TabId, 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;
         var     templateManifest = settings.Template;
         JObject reqOptions       = null;
         //if (!string.IsNullOrEmpty(req.options))
         //{
         //    reqOptions = JObject.Parse(req.options);
         //}
         //string editRole = manifest.GetEditRole();
         bool listMode = templateManifest != null && templateManifest.IsListTemplate;
         if (listMode)
         {
             var          indexConfig  = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir);
             QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
             bool         isEditable   = ActiveModule.CheckIfEditable(PortalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit;
             queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles);
             //if (restSelect != null)
             //{
             //    RestQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, restSelect);
             //}
             queryBuilder.Select.Query.AddRule(new FilterRule()
             {
                 Field = "$id",
                 Value = new StringRuleValue(id)
             });
             IDataItems dsItems;
             if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty)
             {
                 dsItems = new DefaultDataItems()
                 {
                     Items = new List <DefaultDataItem>(),
                     Total = 0
                 };
             }
             else
             {
                 var ds        = DataSourceManager.GetDataSource(manifest.DataSource);
                 var dsContext = new DataSourceContext()
                 {
                     ModuleId       = module.ModuleID,
                     UserId         = UserInfo.UserID,
                     TemplateFolder = settings.TemplateDir.FolderPath,
                     Config         = manifest.DataSourceConfig,
                     Options        = reqOptions
                 };
                 dsItems = ds.GetAll(dsContext, queryBuilder.Select);
             }
             int          mainTabId = settings.DetailTabId > 0 ? settings.DetailTabId : settings.TabId;
             ModelFactory mf        = new ModelFactory(dsItems.Items, activeModule, PortalSettings, mainTabId);
             mf.Options = reqOptions;
             var model = mf.GetModelAsJson(false);
             var res   = new JObject();
             res["meta"]          = new JObject();
             res["meta"]["total"] = dsItems.Total;
             //model["luceneQuery"] = dsItems.DebugInfo;
             if (LogContext.IsLogActive)
             {
                 var logKey = "Query";
                 LogContext.Log(activeModule.ModuleID, logKey, "select", queryBuilder.Select);
                 LogContext.Log(activeModule.ModuleID, logKey, "result", dsItems);
                 LogContext.Log(activeModule.ModuleID, logKey, "model", model);
                 res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(activeModule.ModuleID));
             }
             if (model["Items"] is JArray)
             {
                 foreach (var item in (JArray)model["Items"])
                 {
                     item["id"] = item["Context"]["Id"];
                     JsonUtils.IdJson(item);
                 }
             }
             res[entity] = model["Items"];
             return(Request.CreateResponse(HttpStatusCode.OK, res));
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template "));
         }
     }
     catch (Exception exc)
     {
         Log.Logger.Error(exc);
         return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
     }
 }
 public override IDataItems GetAll(DataSourceContext context, Select selectQuery)
 {
     ReIndexIfNeeded(context.ModuleId, context.TabId, context.PortalId);
     if (context.Index && selectQuery != null)
     {
         SearchResults docs = LuceneUtils.Search(INDEX_SCOPE, selectQuery);
         if (LogContext.IsLogActive)
         {
             var logKey = "Lucene query";
             LogContext.Log(context.ActiveModuleId, logKey, "Filter", docs.ResultDefinition.Filter);
             LogContext.Log(context.ActiveModuleId, logKey, "Query", docs.ResultDefinition.Query);
             LogContext.Log(context.ActiveModuleId, logKey, "Sort", docs.ResultDefinition.Sort);
             LogContext.Log(context.ActiveModuleId, logKey, "PageIndex", docs.ResultDefinition.PageIndex);
             LogContext.Log(context.ActiveModuleId, logKey, "PageSize", docs.ResultDefinition.PageSize);
         }
         int total    = docs.TotalResults;
         var dataList = new List <IDataItem>();
         foreach (string item in docs.ids)
         {
             var user = UserController.GetUserById(context.PortalId, int.Parse(item));
             if (user != null)
             {
                 dataList.Add(ToData(user));
             }
             else
             {
                 App.Services.Logger.Debug($"DnnUsersDataSource.GetAll() ContentItem not found [{item}]");
             }
         }
         return(new DefaultDataItems()
         {
             Items = dataList,
             Total = total,
             DebugInfo = docs.ResultDefinition.Filter + " - " + docs.ResultDefinition.Query + " - " + docs.ResultDefinition.Sort
         });
     }
     else
     {
         int pageIndex = 0;
         int pageSize  = 1000;
         int total     = 0;
         IEnumerable <UserInfo> users;
         if (selectQuery != null)
         {
             pageIndex = selectQuery.PageIndex;
             pageSize  = selectQuery.PageSize;
             var ruleDisplayName = selectQuery.Query.FilterRules.FirstOrDefault(f => f.Field == "DisplayName");
             var ruleRoles       = selectQuery.Query.FilterRules.FirstOrDefault(f => f.Field == "Roles");
             if (ruleDisplayName != null)
             {
                 string displayName = ruleDisplayName.Value.AsString + "%";
                 users = UserController.GetUsersByDisplayName(context.PortalId, displayName, pageIndex, pageSize, ref total, true, false).Cast <UserInfo>();
             }
             else
             {
                 users = UserController.GetUsers(context.PortalId, pageIndex, pageSize, ref total, true, false).Cast <UserInfo>();
                 total = users.Count();
             }
             if (ruleRoles != null)
             {
                 var roleNames = ruleRoles.MultiValue.Select(r => r.AsString).ToList();
                 users = users.Where(u => u.Roles.Intersect(roleNames).Any());
             }
         }
         else
         {
             users = UserController.GetUsers(context.PortalId, pageIndex, pageSize, ref total, true, false).Cast <UserInfo>();
         }
         int excluded = users.Count() - users.Count(u => u.IsInRole("Administrators"));
         users = users.Where(u => !u.IsInRole("Administrators"));
         //users = users.Skip(pageIndex * pageSize).Take(pageSize);
         var dataList = new List <IDataItem>();
         foreach (var user in users)
         {
             dataList.Add(ToData(user));
         }
         return(new DefaultDataItems()
         {
             Items = dataList,
             Total = total - excluded,
             //DebugInfo =
         });
     }
 }
示例#25
0
        public HttpResponseMessage Get(string entity, int pageIndex, int pageSize, string filter = null, string sort = null)
        {
            try
            {
                var collection = entity;
                //if (entity == "items")
                collection = AppConfig.DEFAULT_COLLECTION; // backward compatibility
                RestSelect restSelect = new RestSelect()
                {
                    PageIndex = pageIndex,
                    PageSize  = pageSize
                };
                if (!string.IsNullOrEmpty(filter))
                {
                    restSelect.Query = JsonConvert.DeserializeObject <RestGroup>(filter);
                }
                if (!string.IsNullOrEmpty(sort))
                {
                    restSelect.Sort = JsonConvert.DeserializeObject <List <RestSort> >(sort);
                }

                ModuleInfo activeModule = ActiveModule;

                OpenContentSettings   settings = activeModule.OpenContentSettings();
                OpenContentModuleInfo module   = new OpenContentModuleInfo(ActiveModule);
                JObject reqOptions             = null;

                if (module.IsListMode())
                {
                    var          indexConfig  = OpenContentUtils.GetIndexConfig(settings.TemplateDir, collection);
                    QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                    bool         isEditable   = ActiveModule.CheckIfEditable(PortalSettings);
                    queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles);

                    RestQueryBuilder.MergeQuery(indexConfig, queryBuilder.Select, restSelect, DnnLanguageUtils.GetCurrentCultureCode());
                    IDataItems dsItems;
                    if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty)
                    {
                        dsItems = new DefaultDataItems()
                        {
                            Items = new List <DefaultDataItem>(),
                            Total = 0
                        };
                    }
                    else
                    {
                        IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                        var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID, false, reqOptions);
                        dsContext.Collection = collection;
                        dsItems = ds.GetAll(dsContext, queryBuilder.Select);
                    }
                    var mf = new ModelFactoryMultiple(dsItems.Items, module, PortalSettings, collection);
                    mf.Options = reqOptions;
                    var model = mf.GetModelAsJson(false);
                    var res   = new JObject();
                    res["meta"] = new JObject();
                    if (LogContext.IsLogActive)
                    {
                        var logKey = "Query";
                        LogContext.Log(activeModule.ModuleID, logKey, "select", queryBuilder.Select);
                        LogContext.Log(activeModule.ModuleID, logKey, "debuginfo", dsItems.DebugInfo);
                        LogContext.Log(activeModule.ModuleID, logKey, "model", model);
                        res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(activeModule.ModuleID));

                        if (restSelect != null)
                        {
                            //res["meta"]["select"] = JObject.FromObject(restSelect);
                        }
                    }
                    foreach (var item in model["Items"] as JArray)
                    {
                        item["id"] = item["Context"]["Id"];
                        JsonUtils.IdJson(item);
                    }
                    res[entity]          = model[collection];
                    res["meta"]["total"] = dsItems.Total;
                    return(Request.CreateResponse(HttpStatusCode.OK, res));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template "));
                }
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
示例#26
0
        public HttpResponseMessage List(RequestDTO req)
        {
            try
            {
                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;
                var     templateManifest = settings.Template;
                JObject reqOptions       = null;
                if (!string.IsNullOrEmpty(req.options))
                {
                    reqOptions = JObject.Parse(req.options);
                }
                //string editRole = manifest.GetEditRole();
                bool listMode = templateManifest != null && templateManifest.IsListTemplate;
                if (listMode)
                {
                    var          indexConfig  = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir);
                    QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                    bool         isEditable   = ActiveModule.CheckIfEditable(PortalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit;
                    queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles);

                    JplistQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, req.StatusLst, DnnLanguageUtils.GetCurrentCultureCode());
                    IDataItems dsItems;
                    if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty)
                    {
                        dsItems = new DefaultDataItems()
                        {
                            Items = new List <DefaultDataItem>(),
                            Total = 0
                        };
                    }
                    else
                    {
                        var ds        = DataSourceManager.GetDataSource(manifest.DataSource);
                        var dsContext = new DataSourceContext()
                        {
                            ModuleId       = module.ModuleID,
                            ActiveModuleId = ActiveModule.ModuleID,
                            UserId         = UserInfo.UserID,
                            TemplateFolder = settings.TemplateDir.FolderPath,
                            Config         = manifest.DataSourceConfig,
                            Options        = reqOptions
                        };
                        dsItems = ds.GetAll(dsContext, queryBuilder.Select);
                    }
                    int          mainTabId = settings.DetailTabId > 0 ? settings.DetailTabId : settings.TabId;
                    ModelFactory mf        = new ModelFactory(dsItems.Items, ActiveModule, PortalSettings, mainTabId);
                    mf.Options = reqOptions;
                    var model = mf.GetModelAsJson(false);

                    //model["luceneQuery"] = dsItems.DebugInfo;
                    if (LogContext.IsLogActive)
                    {
                        LogContext.Log(ActiveModule.ModuleID, "RequestContext", "IsEditable", isEditable);
                        LogContext.Log(ActiveModule.ModuleID, "RequestContext", "UserRoles", PortalSettings.UserInfo.Social.Roles.Select(r => r.RoleName));
                        LogContext.Log(ActiveModule.ModuleID, "RequestContext", "CurrentUserId", PortalSettings.UserId);
                        var logKey = "Query";
                        LogContext.Log(ActiveModule.ModuleID, logKey, "select", queryBuilder.Select);
                        LogContext.Log(ActiveModule.ModuleID, logKey, "result", dsItems);
                        LogContext.Log(ActiveModule.ModuleID, logKey, "model", model);
                        model["Logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(ActiveModule.ModuleID));
                    }
                    var res = new ResultDTO()
                    {
                        data  = model,
                        count = dsItems.Total
                    };
                    return(Request.CreateResponse(HttpStatusCode.OK, res));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template "));
                }
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
示例#27
0
        public string GetDataList(RenderInfo info, OpenContentSettings settings, bool clientSide)
        {
            string templateKey = "";

            info.ResetData();

            IDataSource ds        = DataSourceManager.GetDataSource(Settings.Manifest.DataSource);
            var         dsContext = OpenContentUtils.CreateDataContext(_module);

            IEnumerable <IDataItem> resultList = new List <IDataItem>();

            if (clientSide || !info.Files.DataInTemplate)
            {
                if (ds.Any(dsContext))
                {
                    info.SetData(resultList, settings.Data);
                    info.DataExist = true;
                }

                if (info.Template.Views != null)
                {
                    var indexConfig = OpenContentUtils.GetIndexConfig(info.Template);
                    templateKey = GetTemplateKey(indexConfig);
                }
            }
            else
            {
                //server side
                bool useLucene = info.Template.Manifest.Index;
                if (useLucene)
                {
                    PortalSettings portalSettings = PortalSettings.Current;
                    var            indexConfig    = OpenContentUtils.GetIndexConfig(info.Template);
                    if (info.Template.Views != null)
                    {
                        templateKey = GetTemplateKey(indexConfig);
                    }
                    bool         isEditable   = _module.ViewModule.CheckIfEditable(portalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit;
                    QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                    queryBuilder.Build(settings.Query, !isEditable, portalSettings.UserId, DnnLanguageUtils.GetCurrentCultureCode(), portalSettings.UserInfo.Social.Roles, QueryString);

                    resultList = ds.GetAll(dsContext, queryBuilder.Select).Items;
                    if (LogContext.IsLogActive)
                    {
                        //LogContext.Log(_module.ModuleID, "RequestContext", "EditMode", !addWorkFlow);
                        LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "IsEditable", isEditable);
                        LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "UserRoles", portalSettings.UserInfo.Social.Roles.Select(r => r.RoleName));
                        LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "CurrentUserId", portalSettings.UserId);
                        var logKey = "Query";
                        LogContext.Log(_module.ViewModule.ModuleID, logKey, "select", queryBuilder.Select);
                        //LogContext.Log(_module.ModuleID, logKey, "result", resultList);
                    }
                    //Log.Logger.DebugFormat("Query returned [{0}] results.", total);
                    if (!resultList.Any())
                    {
                        /*
                         * if (ds.Any(dsContext) && settings.Query.IsEmpty())
                         * {
                         *   //there seems to be data in de database, but we did not find it in Lucene, so probably the data isn't indexed anymore/yet
                         *   //Components.Lucene.LuceneController.Instance.ReIndexModuleData(_module.ViewModule.ModuleID, settings);
                         * }
                         */
                        //Log.Logger.DebugFormat("Query did not return any results. API request: [{0}], Lucene Filter: [{1}], Lucene Query:[{2}]", settings.Query, queryDef.Filter == null ? "" : queryDef.Filter.ToString(), queryDef.Query == null ? "" : queryDef.Query.ToString());
                        if (ds.Any(dsContext))
                        {
                            info.SetData(resultList, settings.Data);
                            info.DataExist = true;
                        }
                    }
                }
                else
                {
                    resultList = ds.GetAll(dsContext, null).Items;
                    //if (LogContext.IsLogActive)
                    //{
                    //    var logKey = "Get all data of module";
                    //    LogContext.Log(_module.ModuleID, logKey, "result", resultList);
                    //}
                }
                if (resultList.Any())
                {
                    info.SetData(resultList, settings.Data);
                }
            }
            return(templateKey);
        }
示例#28
0
        private string GenerateOutputSingle(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files)
        {
            if (template != null)
            {
                string templateVirtualFolder  = template.UrlFolder;
                string physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                if (dataJson != null)
                {
                    ModelFactorySingle mf;

                    if (_renderinfo.Data == null)
                    {
                        // demo data
                        mf = new ModelFactorySingle(_renderinfo.DataJson, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current);
                    }
                    else
                    {
                        mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current);
                    }
                    if (template.Extension != ".hbs") // razor
                    {
                        dynamic model = mf.GetModelAsDynamic();
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model);
                        }
                        return(ExecuteRazor(template, model));
                    }
                    else // handlebars
                    {
                        object model;
                        if (OpenContentControllerFactory.Instance.OpenContentGlobalSettingsController.GetFastHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model);
                        }
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        return(hbEngine.Execute(page, template, model));
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
示例#29
0
 public void Render(Page page)
 {
     //start rendering
     if (Settings.Template != null)
     {
         if (!Settings.Template.DataNeeded())
         {
             // template without schema & options
             // render the template with no data
             _renderinfo.SetData(null, new JObject(), Settings.Data);
             _renderinfo.OutputString = GenerateOutputSingle(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main);
         }
         else if (_renderinfo.Template.IsListTemplate)
         {
             // Multi items template
             if (string.IsNullOrEmpty(ItemId))
             {
                 // List template
                 if (_renderinfo.Template.Main != null)
                 {
                     // for list templates a main template need to be defined
                     _renderinfo.Files = _renderinfo.Template.Main;
                     string templateKey = GetDataList(_renderinfo, Settings, _renderinfo.Template.ClientSideData);
                     if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey))
                     {
                         _renderinfo.Files = _renderinfo.Template.Views[templateKey];
                     }
                     if (!_renderinfo.ShowInitControl)
                     {
                         _renderinfo.OutputString = GenerateListOutput(page, Settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson);
                     }
                 }
             }
             else
             {
                 LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "QueryParam Id", ItemId);
                 // detail template
                 if (_renderinfo.Template.Detail != null)
                 {
                     GetDetailData(_renderinfo, _module);
                 }
                 if (_renderinfo.Template.Detail != null && !_renderinfo.ShowInitControl)
                 {
                     _renderinfo.Files        = _renderinfo.Template.Detail;
                     _renderinfo.OutputString = GenerateOutputDetail(page, Settings.Template, _renderinfo.Template.Detail, _renderinfo.DataJson, _renderinfo.SettingsJson);
                 }
                 else // if itemid not corresponding to this module or no DetailTemplate present, show list template
                 {
                     // List template
                     if (_renderinfo.Template.Main != null)
                     {
                         // for list templates a main template need to be defined
                         _renderinfo.Files = _renderinfo.Template.Main;
                         string templateKey = GetDataList(_renderinfo, Settings, _renderinfo.Template.ClientSideData);
                         if (!string.IsNullOrEmpty(templateKey) && _renderinfo.Template.Views != null && _renderinfo.Template.Views.ContainsKey(templateKey))
                         {
                             _renderinfo.Files = _renderinfo.Template.Views[templateKey];
                         }
                         if (!_renderinfo.ShowInitControl)
                         {
                             _renderinfo.OutputString = GenerateListOutput(page, Settings.Template, _renderinfo.Files, _renderinfo.DataList, _renderinfo.SettingsJson);
                         }
                     }
                 }
             }
         }
         else
         {
             // single item template
             GetSingleData(_renderinfo, Settings);
             if (!_renderinfo.ShowInitControl)
             {
                 _renderinfo.OutputString = GenerateOutputSingle(page, _renderinfo.Template.MainTemplateUri(), _renderinfo.DataJson, _renderinfo.SettingsJson, _renderinfo.Template.Main);
             }
         }
     }
 }