Ejemplo n.º 1
0
        public CiResult <ItemPageResult> PartialList(ItemPageModel model)
        {
            // 不允許cache
            var result = mainServie.GetPartialList(model);

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 分頁 for ajax
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public ActionResult GetPageList(ItemPageModel model)
        {
            if (!Request.IsAjaxRequest() && !ApplicationHelper.IsLocal)
            {
                return(ErrorPage()); //404
            }

            return(Partial(model));
        }
Ejemplo n.º 3
0
        public ActionResult Partial(ItemPageModel model)
        {
            //search必須有關鍵字
            if (model.ViewName == "Search_Page" && string.IsNullOrWhiteSpace(model.SearchString))
            {
                return(ErrorPage()); //404
            }

            var result = mainServie.GetPartialListByCache(model);

            return(PartialView(ViewName("Item", model.ViewName), result.Data));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 取得列表、部分內容 by cache
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult <ItemPageResult> GetPartialListByCache(ItemPageModel model)
        {
            var result      = new CiResult <ItemPageResult>();
            var cacheHelper = new CacheHelper();

            //get cache
            if (!string.IsNullOrEmpty(model.CacheName))
            {
                var chacheName = $"{ApplicationHelper.ClientID}_item_{model.CacheName}";
                result.Data = cacheHelper.Get <ItemPageResult>(model.CacheName);
            }

            //set cache
            if (result.Data?.DataResult == null)
            {
                result = GetPartialList(model);
                if (result.IsSuccess && !string.IsNullOrEmpty(model.CacheName))
                {
                    cacheHelper.Set(model.CacheName, result.Data);
                }
            }

            return(result);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 取得列表、部分內容
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult <ItemPageResult> GetPartialList(ItemPageModel model)
        {
            var result = new CiResult <ItemPageResult>();

            try
            {
                //search
                if (!string.IsNullOrWhiteSpace(model.SearchString))
                {
                    model.SearchString = HttpUtility.UrlDecode(model.SearchString);
                    model.SearchString = _Check.RelpaceBadCharacters(model.SearchString);

                    //取structure: 包含Article, 排除Banner、Category
                    if (string.IsNullOrEmpty(model.StructureJson) && !string.IsNullOrEmpty(model.SearchString))
                    {
                        var articleStructure = structureService.GetList(ItemType.Article, new List <ItemType> {
                            ItemType.Banner, ItemType.Category
                        });
                        model.StructureJson = _Json.ModelToJson(articleStructure.Data.Select(x => x.ID));
                    }
                }

                //有routeName: 先取分頁參數
                if (!string.IsNullOrEmpty(model.RouteName))
                {
                    var listResult = GetList(model.RouteName);
                    if (listResult.IsSuccess)
                    {
                        model.StructureJson = listResult.Data.ItemPageModel.StructureJson;
                        model.CategoryJson  = listResult.Data.ItemPageModel.CategoryJson;
                        model.SortColumn    = listResult.Data.ItemPageModel.SortColumn;
                    }
                    else
                    {
                        result.Message = listResult.Message;
                        return(result);
                    }
                }

                if (string.IsNullOrEmpty(model.StructureJson))
                {
                    result.Message = "no StructureJson";
                    return(result);
                }

                var stuctureIDs = _Json.JsonToModel <List <Guid> >(model.StructureJson);
                var categoryIDs = _Json.JsonToModel <List <Guid> >(model.CategoryJson);

                var listData = service.GetListView(
                    new PageParameter
                {
                    IsPaged      = model.IsPaged,
                    CurrentPage  = model.CurrentPage,
                    PageSize     = model.PageSize,
                    SortColumn   = model.SortColumn,
                    IsDescending = model.IsDescending,
                    DataLevel    = model.DataLevel
                },
                    new ItemFilter
                {
                    StructureIDs  = stuctureIDs,
                    CategoryIDs   = categoryIDs,
                    ExceptID      = model.ExceptID,
                    CoverType     = model.CoverType,
                    SearchString  = model.SearchString,
                    SearchType    = model.SearchType,
                    LangType      = ApplicationHelper.DefaultLanguage,
                    SelectEnabled = true,
                });


                // Html Decode
                foreach (var item in listData.Data)
                {
                    item.ItemLanguage.Content      = HttpUtility.HtmlDecode(item.ItemLanguage.Content);
                    item.ItemLanguage.TemplateText = HttpUtility.HtmlDecode(item.ItemLanguage.TemplateText);
                }

                var resultModel = new ItemPageResult
                {
                    DataResult = new PageModel <ItemWebViewModel>
                    {
                        CurrentPage = listData.CurrentPage,
                        TotalCount  = listData.TotalCount,
                        PageCount   = listData.PageCount,
                        DataStart   = listData.DataStart,
                        DataEnd     = listData.DataEnd,
                        Data        = listData.Data.Select(x => TransModel(x)).ToList(),
                    },
                    ItemPageModel = model
                };

                result.Data      = resultModel;
                result.IsSuccess = true;
            }
            catch (Exception e)
            {
                result.Message = e.Message;
            }

            return(result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Item private (from Get、Preview)
        /// </summary>
        /// <param name="oriData"></param>
        /// <param name="viewName">回傳view</param>
        /// <param name="itemType">指定類型</param>
        /// <returns></returns>
        public CiResult <object> ShowItem(ItemViewModel oriData, ref string viewName, ItemType?itemType = null)
        {
            var result = new CiResult <object>();
            var data   = TransModel(oriData);

            if (data == null) // || string.IsNullOrEmpty(structure.ViewName)
            {
                result.Message = "data not found";
                return(result); //404
            }

            #region 取得資料

            //結構
            var structure = structureService.Get(data.Item.StructureID);
            if (structure == null) // || string.IsNullOrEmpty(structure.ViewName)
            {
                result.Message = "structure not found";
                return(result); //404
            }

            //子結構(子分類) 文章後推一層
            var subStructures = structureService.GetByParent(structure.ID.ToListObject(), ItemType.CategorySub);
            var subItemList   = new PageModel <ItemViewModel>();
            if (subStructures.Any())
            {
                subItemList = service.GetListView(
                    new PageParameter
                {
                    SortColumn = SortColumn.Sort,
                    IsPaged    = false
                }, new ItemFilter
                {
                    LangType     = ApplicationHelper.DefaultLanguage,
                    StructureIDs = subStructures.Select(x => x.ID).ToList(),
                    CategoryIDs  = data.Item.ID.ToListObject()
                });
            }

            /****若有子分類,文章往後推一層****/

            //子結構(多種文章)
            List <Guid> articleStructureID = (subStructures.Any()) ? subStructures.Select(x => x.ID).ToList() : structure.ID.ToListObject();
            var         articleStructures  = structureService.GetByParent(articleStructureID, ItemType.Article);
            //分頁參數
            var pageModel = new ItemPageModel();
            if (articleStructures != null)
            {
                //所有層級Category都可 (父層分類可找到子層分類的文章)
                var CategoryIDs = data.Item.ID.ToListObject();
                if (subStructures.Any())
                {
                    CategoryIDs.AddRange(subItemList.Data.Select(x => x.Item.ID).ToList());
                }
                pageModel.CategoryJson  = _Json.ModelToJson(CategoryIDs);
                pageModel.StructureJson = _Json.ModelToJson(articleStructures.Select(x => x.ID));
                //sort
                if (articleStructures.All(x => x.RequiredTypes.HasValue((int)ContentType.Date)))
                {
                    pageModel.SortColumn = SortColumn.Date;
                }
                else if (articleStructures.All(x => x.RequiredTypes.HasValue((int)ContentType.Sort)))
                {
                    pageModel.SortColumn = SortColumn.Sort;
                }
                else
                {
                    pageModel.SortColumn = SortColumn.CreateTime;
                }

                //人才庫
                if (articleStructures.Any(x => x.ItemTypes.HasValue((int)ItemType.Q8People)))
                {
                    pageModel.DataLevel = DataLevel.Normal;
                }
            }

            #endregion

            #region 回傳頁面
            //// ckeditor
            //data.ItemLanguage.Content = HttpUtility.HtmlDecode(data.ItemLanguage.Content);
            //data.ItemLanguage.TemplateText = HttpUtility.HtmlDecode(data.ItemLanguage.TemplateText);

            //Banner
            //if (structure.ItemTypes.HasValue((int)ItemType.Banner) || itemType == ItemType.Banner)
            //{
            //    if (articleStructure == null)
            //        return null; //404

            //    pageModel.ViewName = structure.ViewName;
            //    pageModel.IsPaged = false;

            //    return pageModel;

            //}

            // else

            //內容 Detail
            if (structure.ItemTypes.HasValue((int)ItemType.Article) || itemType == ItemType.Article)
            {
                viewName         = structure.ViewName;
                result.Data      = data;
                result.IsSuccess = true;
                return(result);
            }
            //列表 List
            else if (structure.ItemTypes.HasValue((int)ItemType.Category) || itemType == ItemType.Category)
            {
                //子結構可以是文章或次分類
                if (!articleStructures.Any() && !subStructures.Any())
                {
                    return(result); //404
                }
                pageModel.ViewName = structure.ViewName + "_Page";
                var model = new ItemListModel
                {
                    ItemViewModel = data,
                    ItemPageModel = pageModel,
                };
                if (subItemList.Data != null)
                {
                    model.SubItemList = new List <ItemWebViewModel>(
                        subItemList.Data?.Select(x => TransModel(x)).ToList()
                        );
                }

                viewName         = structure.ViewName;
                result.Data      = model;
                result.IsSuccess = true;
                return(result);
            }

            result.Message = "type not found";
            return(result); //404

            #endregion
        }