Пример #1
0
 protected override void VisitWhereCategory(WhereCategoryExpression expression)
 {
     CategoryQueries = CategoryQueries.Concat(new[] { expression.CategoryQuery });
 }
Пример #2
0
 protected override void VisitWhereCategory(WhereCategoryExpression expression)
 {
     ThrowNotSupported();
 }
Пример #3
0
 protected override void VisitWhereCategory(WhereCategoryExpression expression)
 {
     throw new NotSupportedException();
     //CategoryQueries = CategoryQueries.Concat(new[] { expression.CategoryQuery });
 }
Пример #4
0
        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 });
            }
        }
Пример #5
0
 protected abstract void VisitWhereCategory(WhereCategoryExpression expression);
Пример #6
0
        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
            });
        }