/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Everest.Library.ExtensionMethod;
using Everest.CmsServices.Models;
using Everest.CmsServices.MvcHelper;
using Everest.CmsServices.DataRule.Pattern;
namespace Everest.CmsServices.DataRule{
/// <summary>
///
/// </summary>
public class ListValueEvaluator : FolderDataEvaluator
{
public override DataRuleValueType RuleType
{
get { return DataRuleValueType.List; }
}
public override object Evaluate(DataRuleContext context, Cms_DataRule dataRule, TimeSpan? cacheTime)
{
IDataRuleValueEvaluator expression;
IEnumerable<Cms_Folder> folders = GetFolders(context, dataRule.FolderUUIDFromReference.Value);
int startIndex = 1;
int pageSize = PatternEvaluator.GetInt(dataRule.PageSize, context.QueryString, context.UserControl, 20);
if (!StringExtensions.IsNullOrEmptyTrim(dataRule.TopCount))
{
pageSize = PatternEvaluator.GetInt(dataRule.TopCount, context.QueryString, context.UserControl, 10);
}
else
{
startIndex = startIndex = (PatternEvaluator.GetInt(dataRule.PageIndex, context.QueryString, context.UserControl, 1) - 1) * pageSize + 1;
}
if (FolderType == FolderType.TextContent)
{
expression = new TextContentListEvaluator(this.Folder, folders, startIndex, pageSize);
}
else
expression = new BinaryContentListEvaluator(this.Folder, folders, startIndex, pageSize);
return expression.Evaluate(context, dataRule, cacheTime);
}
}
}
|