/// <summary>
        /// Perform a particular action.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="action">The action.</param>
        /// <param name="item">The item to perform the action on.</param>
        /// <param name="data">The additional data/parameters needed to perform the Action.</param>
        /// <returns>Optionally return a JToken with a result value</returns>
        /// <exception cref="System.NotImplementedException"></exception>
        public virtual JToken Action(DataSourceContext context, string action, IDataItem item, JToken data)
        {
            if (action == "FormSubmit")
            {
                OpenContentController ctrl = new OpenContentController(context.PortalId);
                //var indexConfig = OpenContentUtils.GetIndexConfig(new FolderUri(context.TemplateFolder), "Submissions");
                var content = new OpenContentInfo()
                {
                    ModuleId             = GetModuleId(context),
                    Collection           = "Submissions",
                    Title                = item.Data["Title"] == null ? "Form" : item.Data["Title"].ToString(),
                    Json                 = data["form"].ToString(),
                    CreatedByUserId      = context.UserId,
                    CreatedOnDate        = DateTime.Now,
                    LastModifiedByUserId = context.UserId,
                    LastModifiedOnDate   = DateTime.Now
                };
                ctrl.AddContent(content);

                //Index the content item
                //if (context.Index)
                //{
                //    LuceneController.Instance.Add(content, indexConfig);
                //    LuceneController.Instance.Commit();
                //}
                return(FormUtils.FormSubmit(data as JObject, item.Data.DeepClone() as JObject));
            }
            return(null);
        }
        public virtual IDataItems GetAll(DataSourceContext context, Select selectQuery)
        {
            if (selectQuery == null)
            {
                return(GetAll(context));
            }

            SelectQueryDefinition def  = BuildQuery(context, selectQuery);
            OpenContentController ctrl = new OpenContentController(context.PortalId);
            SearchResults         docs = LuceneController.Instance.Search(OpenContentInfo.GetScope(GetModuleId(context), context.Collection), 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
                {
                    App.Services.Logger.Debug($"OpenContentDataSource.GetAll() ContentItem not found [{item}]");
                }
            }
            return(new DefaultDataItems()
            {
                Items = dataList,
                Total = total,
                DebugInfo = def.Filter + " - " + def.Query + " - " + def.Sort
            });
        }
        public virtual void Add(DataSourceContext context, JToken data)
        {
            OpenContentController ctrl = new OpenContentController(context.PortalId);
            var content = new OpenContentInfo()
            {
                ModuleId             = GetModuleId(context),
                Collection           = context.Collection,
                Title                = data["Title"]?.ToString() ?? "",
                Json                 = data.ToString(),
                CreatedByUserId      = context.UserId,
                CreatedOnDate        = DateTime.Now,
                LastModifiedByUserId = context.UserId,
                LastModifiedOnDate   = DateTime.Now
            };

            ctrl.AddContent(content);
            context.Id = content.Id;

            //Index the content item
            if (context.Index)
            {
                var indexConfig = OpenContentUtils.GetIndexConfig(new FolderUri(context.TemplateFolder), context.Collection);
                LuceneController.Instance.Add(content, indexConfig);
                LuceneController.Instance.Commit();
            }
            ClearUrlRewriterCache(context);
            Notify(context, data, "add");
        }
Ejemplo n.º 4
0
        private void IndexModuleData(LuceneController lc, int moduleId, OpenContentSettings settings)
        {
            bool index = false;

            if (settings.TemplateAvailable)
            {
                index = settings.Manifest.Index;
            }
            FieldConfig indexConfig = null;

            if (index)
            {
                indexConfig = OpenContentUtils.GetIndexConfig(settings.Template);
            }

            if (settings.IsOtherModule)
            {
                moduleId = settings.ModuleId;
            }

            lc.Store.Delete(new TermQuery(new Term("$type", OpenContentInfo.GetScope(moduleId, settings.Template.Collection))));
            OpenContentController occ = new OpenContentController();

            foreach (var item in occ.GetContents(moduleId, settings.Template.Collection))
            {
                lc.Add(item, indexConfig);
            }
        }
Ejemplo n.º 5
0
 public void Add(OpenContentInfo data, FieldConfig config)
 {
     if (null == data)
     {
         throw new ArgumentNullException("data");
     }
     Store.Add(JsonMappingUtils.JsonToDocument(data.ModuleId.ToString(), data.ContentId.ToString(), data.CreatedByUserId.ToString(), data.CreatedOnDate, data.JsonAsJToken, data.Json, config));
 }
Ejemplo n.º 6
0
        public void Reindex(DataSourceContext context)
        {
            string scope              = OpenContentInfo.GetScope(context.ModuleId, context.Collection);
            var    indexConfig        = OpenContentUtils.GetIndexConfig(new FolderUri(context.TemplateFolder), context.Collection); //todo index is being build from schema & options. But they should be provided by the provider, not directly from the files
            OpenContentController occ = new OpenContentController(context.PortalId);

            LuceneController.Instance.ReIndexModuleData(occ.GetContents(context.ModuleId, context.Collection), indexConfig, scope);
        }
Ejemplo n.º 7
0
 public void Update(OpenContentInfo data, FieldConfig config)
 {
     if (null == data)
     {
         throw new ArgumentNullException("data");
     }
     Delete(data);
     Add(data, config);
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Deletes the matching objects in the IndexWriter.
        /// </summary>
        /// <param name="data"></param>
        public void Delete(OpenContentInfo data)
        {
            if (null == data)
            {
                throw new ArgumentNullException("data");
            }

            var selection = new TermQuery(new Term(JsonMappingUtils.FieldId, data.ContentId.ToString()));

            Query deleteQuery = new FilteredQuery(selection, JsonMappingUtils.GetTypeFilter(data.ModuleId.ToString()));

            Store.Delete(deleteQuery);
        }
Ejemplo n.º 9
0
 private static DefaultDataItem CreateDefaultDataItem(OpenContentInfo content)
 {
     return(new DefaultDataItem
     {
         Id = content.ContentId.ToString(),
         Title = content.Title,
         Data = content.JsonAsJToken,
         CreatedByUserId = content.CreatedByUserId,
         LastModifiedByUserId = content.LastModifiedByUserId,
         LastModifiedOnDate = content.LastModifiedOnDate,
         CreatedOnDate = content.CreatedOnDate,
         Item = content
     });
 }
        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 DefaultDataItem CreateDefaultDataItem(OpenContentInfo content)
 {
     return(new DefaultDataItem
     {
         Id = content.Id,
         Key = content.Key,
         Collection = content.Collection,
         Title = content.Title,
         Data = content.JsonAsJToken,
         CreatedByUserId = content.CreatedByUserId,
         LastModifiedByUserId = content.LastModifiedByUserId,
         LastModifiedOnDate = content.LastModifiedOnDate,
         CreatedOnDate = content.CreatedOnDate,
         Item = content
     });
 }
Ejemplo n.º 12
0
        public virtual void Add(DataSourceContext context, JToken data)
        {
            OpenContentController ctrl = new OpenContentController();
            var indexConfig            = OpenContentUtils.GetIndexConfig(new FolderUri(context.TemplateFolder), context.Collection);
            var content = new OpenContentInfo()
            {
                ModuleId             = GetModuleId(context),
                Collection           = context.Collection,
                Title                = data["Title"] == null ? "" : data["Title"].ToString(),
                Json                 = data.ToString(),
                CreatedByUserId      = context.UserId,
                CreatedOnDate        = DateTime.Now,
                LastModifiedByUserId = context.UserId,
                LastModifiedOnDate   = DateTime.Now
            };

            ctrl.AddContent(content, context.Index, indexConfig);
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Perform a particular action.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="action">The action.</param>
 /// <param name="item">The item to perform the action on.</param>
 /// <param name="data">The additional data/parameters needed to perform the Action.</param>
 /// <returns>Optionally return a JToken with a result value</returns>
 /// <exception cref="System.NotImplementedException"></exception>
 public virtual JToken Action(DataSourceContext context, string action, IDataItem item, JToken data)
 {
     if (action == "FormSubmit")
     {
         OpenContentController ctrl = new OpenContentController();
         var indexConfig            = OpenContentUtils.GetIndexConfig(new FolderUri(context.TemplateFolder), "Submissions");
         var content = new OpenContentInfo()
         {
             ModuleId             = GetModuleId(context),
             Collection           = "Submissions",
             Title                = "Form",
             Json                 = data["form"].ToString(),
             CreatedByUserId      = context.UserId,
             CreatedOnDate        = DateTime.Now,
             LastModifiedByUserId = context.UserId,
             LastModifiedOnDate   = DateTime.Now
         };
         ctrl.AddContent(content, context.Index, indexConfig);
         return(FormUtils.FormSubmit(data as JObject));
     }
     return(null);
 }
Ejemplo n.º 14
0
        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);
        }