protected override void VisitWhereCategory(WhereCategoryExpression expression) { CategoryQueries = CategoryQueries.Concat(new[] { expression.CategoryQuery }); }
protected override void VisitWhereCategory(WhereCategoryExpression expression) { ThrowNotSupported(); }
protected override void VisitWhereCategory(WhereCategoryExpression expression) { throw new NotSupportedException(); //CategoryQueries = CategoryQueries.Concat(new[] { expression.CategoryQuery }); }
protected override void VisitWhereCategory(WhereCategoryExpression expression) { if (query is TranslatedTextContentQuery) { TranslatedTextContentQuery textContentQuery = (TranslatedTextContentQuery)query; var categoryQuery = (new TextContentQueryTranslator()).Translate(expression.CategoryQuery); textContentQuery.CategroyQueries = textContentQuery.CategroyQueries.Concat(new[] { (TranslatedTextContentQuery)categoryQuery }); } }
protected abstract void VisitWhereCategory(WhereCategoryExpression expression);
public virtual ActionResult Index(string folderName, string parentUUID, string parentFolder, string search , IEnumerable<WhereClause> whereClause, int? page, int? pageSize, string sortField = null, string sortDir = null) { //compatible with the Folder parameter changed to FolderName. folderName = folderName ?? this.ControllerContext.RequestContext.GetRequestValue("Folder"); TextFolder textFolder = new TextFolder(Repository, folderName).AsActual(); var schema = textFolder.GetSchema().AsActual(); SchemaPath schemaPath = new SchemaPath(schema); ViewData["Folder"] = textFolder; ViewData["Schema"] = schema; ViewData["Menu"] = textFolder.GetFormTemplate(FormType.Grid_Menu); ViewData["Template"] = textFolder.GetFormTemplate(FormType.Grid); ViewData["WhereClause"] = whereClause; SetPermissionData(textFolder); IEnumerable<TextFolder> childFolders = new TextFolder[0]; //Skip the child folders on the embedded folder grid. if (string.IsNullOrEmpty(parentFolder)) { if (!page.HasValue || page.Value <= 1) { childFolders = TextFolderManager.ChildFolders(textFolder, search).Select(it => it.AsActual()); } } IContentQuery<TextContent> query = textFolder.CreateQuery(); query = SortByField(sortField, sortDir, query); bool showTreeStyle = schema.IsTreeStyle; //如果有带搜索条件,则不输出树形结构 if (!string.IsNullOrEmpty(search)) { IWhereExpression exp = new FalseExpression(); foreach (var item in schema.Columns.Where(it => it.ShowInGrid)) { exp = new OrElseExpression(exp, (new WhereContainsExpression(null, item.Name, search))); } if (exp != null) { query = query.Where(exp); } showTreeStyle = false; } //// Category filter if (textFolder.Categories != null) { foreach (CategoryFolder cf in textFolder.Categories) { string uuid = Request.QueryString[cf.FolderName]; if (!String.IsNullOrEmpty(uuid)) { TextFolder tf = new TextFolder(Repository, cf.FolderName).AsActual(); IWhereExpression exp = new WhereCategoryExpression(null, tf.CreateQuery().Where("UUID='" + uuid + "'")); // query = query.Where(exp); } } } //// if (whereClause != null && whereClause.Count() > 0) { var expression = WhereClauseToContentQueryHelper.Parse(whereClause, schema, new MVCValueProviderWrapper(ValueProvider)); query = query.Where(expression); showTreeStyle = false; } if (!string.IsNullOrWhiteSpace(parentUUID)) { query = query.WhereEquals("ParentUUID", parentUUID); } else { //有两种情况需要考虑要不要查询所有的数据(ParentUUID=null) //1.树形结构数据,第一次查询需要过滤ParentUUID==null //2.自嵌套的目前结构,也需要过滤ParentUUID==null var selfEmbedded = textFolder.EmbeddedFolders != null && textFolder.EmbeddedFolders.Contains(textFolder.FullName, StringComparer.OrdinalIgnoreCase); if (showTreeStyle || selfEmbedded) { query = query.Where(new OrElseExpression(new WhereEqualsExpression(null, "ParentUUID", null), new WhereEqualsExpression(null, "ParentUUID", ""))); } } if (childFolders != null) { childFolders = childFolders .Select(it => it.AsActual()) .Where(it => it.Visible) .Where(it => Kooboo.CMS.Content.Services.ServiceFactory.WorkflowManager.AvailableViewContent(it, User.Identity.Name)); } page = page ?? 1; pageSize = pageSize ?? textFolder.PageSize; //var pagedList = query.ToPageList(page.Value, pageSize.Value); //IEnumerable<TextContent> contents = pagedList.ToArray(); //if (Repository.EnableWorkflow == true) //{ // contents =WorkflowManager.GetPendWorkflowItemForContents(Repository, contents.ToArray(), User.Identity.Name); //} //var workflowContentPagedList = new PagedList<TextContent>(contents, page.Value, pageSize.Value, pagedList.TotalItemCount); //ViewData["ContentPagedList"] = workflowContentPagedList; return View(new TextContentGrid() { ChildFolders = childFolders.ToArray(), ContentQuery = query, PageIndex = page.Value, PageSize = pageSize.Value, ShowTreeStyle = showTreeStyle }); }