/*
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.CmsServices.Models;
namespace Everest.CmsServices.DataRule{
/// <summary>
///
/// </summary>
public abstract class FolderDataEvaluator : IDataRuleValueEvaluator
{
#region IDataRuleValueExpression Members
public abstract DataRuleValueType RuleType { get; }
public abstract object Evaluate(DataRuleContext context, Cms_DataRule dataRule, TimeSpan? cacheTime);
#endregion
/// <summary>
/// Gets or sets the folder.
/// </summary>
/// <value>The folder.</value>
public Cms_Folder Folder { get; private set; }
/// <summary>
/// Gets or sets the type of the folder.
/// </summary>
/// <value>The type of the folder.</value>
public FolderType FolderType { get; private set; }
/// <summary>
/// Gets the folder.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="folderUUID">The folder UUID.</param>
/// <returns></returns>
protected virtual IEnumerable<Cms_Folder> GetFolders(DataRuleContext context, Guid folderUUID)
{
var localizedFolder = CachedData.GetLocalizedFolder(context.Application.ApplicationName, folderUUID);
//get the schema
//var schema = CachedData.GetSchemaByFolder(folder.UUID);
this.FolderType = (FolderType)localizedFolder.FolderType;
//FolderType parentFolderType = FolderType.Content;
this.Folder = localizedFolder;
//the TextContent (BinaryContent) folder of the current application.
//Cms_Folder textContextFolder = CachedData.GetFolder(context.Application.ApplicationName, parentFolderType);
IEnumerable<string> baseApplications = CachedData.GetBaseApplications(context.Application.ApplicationName);
return context.DataContext.QueryFolders(baseApplications, localizedFolder.OriginalUUID);
}
}
}
|